   1              		.syntax unified
   2              		.cpu cortex-m3
   3              		.fpu softvfp
   4              		.eabi_attribute 20, 1
   5              		.eabi_attribute 21, 1
   6              		.eabi_attribute 23, 3
   7              		.eabi_attribute 24, 1
   8              		.eabi_attribute 25, 1
   9              		.eabi_attribute 26, 1
  10              		.eabi_attribute 30, 4
  11              		.eabi_attribute 34, 1
  12              		.eabi_attribute 18, 4
  13              		.thumb
  14              		.syntax unified
  15              		.file	"gfx.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.section	.text.gfx_Init,"ax",%progbits
  20              		.align	1
  21              		.global	gfx_Init
  22              		.thumb
  23              		.thumb_func
  25              	gfx_Init:
  26              	.LFB0:
  27              		.file 1 "uc_libc_dev/graphic/gfx/gfx.c"
   1:uc_libc_dev/graphic/gfx/gfx.c **** #include "gfx.h"
   2:uc_libc_dev/graphic/gfx/gfx.c **** #include <stdlib.h>
   3:uc_libc_dev/graphic/gfx/gfx.c **** #include <string.h>
   4:uc_libc_dev/graphic/gfx/gfx.c **** 
   5:uc_libc_dev/graphic/gfx/gfx.c **** //static u16* buffer;
   6:uc_libc_dev/graphic/gfx/gfx.c **** static int rotation;
   7:uc_libc_dev/graphic/gfx/gfx.c **** static int _width, _height; // Display w/h as modified by current rotation
   8:uc_libc_dev/graphic/gfx/gfx.c **** static int  cursor_x, cursor_y;
   9:uc_libc_dev/graphic/gfx/gfx.c **** //static int textbgcolor;
  10:uc_libc_dev/graphic/gfx/gfx.c **** static int textcolor;
  11:uc_libc_dev/graphic/gfx/gfx.c **** static int textsize;
  12:uc_libc_dev/graphic/gfx/gfx.c **** static int wrap;   // If set, 'wrap' text at right edge of display
  13:uc_libc_dev/graphic/gfx/gfx.c **** static int _cp437; // If set, use correct CP437 charset (default is off)
  14:uc_libc_dev/graphic/gfx/gfx.c **** tGFXfont *gfxFont;
  15:uc_libc_dev/graphic/gfx/gfx.c **** 
  16:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_Init(void) {
  28              		.loc 1 16 0
  29              		.cfi_startproc
  30              		@ args = 0, pretend = 0, frame = 0
  31              		@ frame_needed = 0, uses_anonymous_args = 0
  32              		@ link register save eliminated.
  17:uc_libc_dev/graphic/gfx/gfx.c **** //  	int bytes = tft_Width() * tft_Height() * 2;
  18:uc_libc_dev/graphic/gfx/gfx.c **** //  	if((buffer = (u16*)malloc(bytes))) {
  19:uc_libc_dev/graphic/gfx/gfx.c **** //    		memset(buffer, 0, bytes);
  20:uc_libc_dev/graphic/gfx/gfx.c **** //  	}
  21:uc_libc_dev/graphic/gfx/gfx.c **** 
  22:uc_libc_dev/graphic/gfx/gfx.c ****   	_width    = gfxWIDTH;
  23:uc_libc_dev/graphic/gfx/gfx.c ****   	_height   = gfxHEIGHT;
  24:uc_libc_dev/graphic/gfx/gfx.c ****   	rotation  = 0;
  25:uc_libc_dev/graphic/gfx/gfx.c ****   	cursor_y  = 0;
  26:uc_libc_dev/graphic/gfx/gfx.c ****   	cursor_x  = 0;
  27:uc_libc_dev/graphic/gfx/gfx.c ****   	textsize  = 1;
  28:uc_libc_dev/graphic/gfx/gfx.c ****   	textcolor = clWhite;
  33              		.loc 1 28 0
  34 0000 4FF6FF70 		movw	r0, #65535
  22:uc_libc_dev/graphic/gfx/gfx.c ****   	_height   = gfxHEIGHT;
  35              		.loc 1 22 0
  36 0004 0B4B     		ldr	r3, .L2
  37 0006 F022     		movs	r2, #240
  38 0008 1A60     		str	r2, [r3]
  23:uc_libc_dev/graphic/gfx/gfx.c ****   	rotation  = 0;
  39              		.loc 1 23 0
  40 000a 0B4B     		ldr	r3, .L2+4
  41 000c 4FF4A072 		mov	r2, #320
  42 0010 1A60     		str	r2, [r3]
  24:uc_libc_dev/graphic/gfx/gfx.c ****   	cursor_y  = 0;
  43              		.loc 1 24 0
  44 0012 0A4A     		ldr	r2, .L2+8
  45 0014 0023     		movs	r3, #0
  46 0016 1360     		str	r3, [r2]
  25:uc_libc_dev/graphic/gfx/gfx.c ****   	cursor_x  = 0;
  47              		.loc 1 25 0
  48 0018 094A     		ldr	r2, .L2+12
  27:uc_libc_dev/graphic/gfx/gfx.c ****   	textcolor = clWhite;
  49              		.loc 1 27 0
  50 001a 0A49     		ldr	r1, .L2+16
  25:uc_libc_dev/graphic/gfx/gfx.c ****   	cursor_x  = 0;
  51              		.loc 1 25 0
  52 001c 1360     		str	r3, [r2]
  26:uc_libc_dev/graphic/gfx/gfx.c ****   	textsize  = 1;
  53              		.loc 1 26 0
  54 001e 0A4A     		ldr	r2, .L2+20
  55 0020 1360     		str	r3, [r2]
  27:uc_libc_dev/graphic/gfx/gfx.c ****   	textcolor = clWhite;
  56              		.loc 1 27 0
  57 0022 0122     		movs	r2, #1
  58 0024 0A60     		str	r2, [r1]
  59              		.loc 1 28 0
  60 0026 0949     		ldr	r1, .L2+24
  61 0028 0860     		str	r0, [r1]
  29:uc_libc_dev/graphic/gfx/gfx.c ****   	//textbgcolor = clWhite;
  30:uc_libc_dev/graphic/gfx/gfx.c ****   	wrap      = pdTRUE;
  62              		.loc 1 30 0
  63 002a 0949     		ldr	r1, .L2+28
  64 002c 0A60     		str	r2, [r1]
  31:uc_libc_dev/graphic/gfx/gfx.c ****   	_cp437    = pdFALSE;
  32:uc_libc_dev/graphic/gfx/gfx.c ****   	gfxFont   = NULL;
  65              		.loc 1 32 0
  66 002e 094A     		ldr	r2, .L2+32
  67 0030 1360     		str	r3, [r2]
  68 0032 7047     		bx	lr
  69              	.L3:
  70              		.align	2
  71              	.L2:
  72 0034 00000000 		.word	.LANCHOR0
  73 0038 00000000 		.word	.LANCHOR1
  74 003c 00000000 		.word	.LANCHOR2
  75 0040 00000000 		.word	.LANCHOR3
  76 0044 00000000 		.word	.LANCHOR5
  77 0048 00000000 		.word	.LANCHOR4
  78 004c 00000000 		.word	.LANCHOR6
  79 0050 00000000 		.word	.LANCHOR7
  80 0054 00000000 		.word	gfxFont
  81              		.cfi_endproc
  82              	.LFE0:
  84              		.section	.text.gfx_SetRotation,"ax",%progbits
  85              		.align	1
  86              		.global	gfx_SetRotation
  87              		.thumb
  88              		.thumb_func
  90              	gfx_SetRotation:
  91              	.LFB1:
  33:uc_libc_dev/graphic/gfx/gfx.c **** }
  34:uc_libc_dev/graphic/gfx/gfx.c **** 
  35:uc_libc_dev/graphic/gfx/gfx.c **** //void gfx_Finish(void) {
  36:uc_libc_dev/graphic/gfx/gfx.c **** //	if(buffer) free(buffer);
  37:uc_libc_dev/graphic/gfx/gfx.c **** //}
  38:uc_libc_dev/graphic/gfx/gfx.c **** //
  39:uc_libc_dev/graphic/gfx/gfx.c **** //u16* gfx_getBuffer(void) {
  40:uc_libc_dev/graphic/gfx/gfx.c **** //	return buffer;
  41:uc_libc_dev/graphic/gfx/gfx.c **** //}
  42:uc_libc_dev/graphic/gfx/gfx.c **** 
  43:uc_libc_dev/graphic/gfx/gfx.c **** //static void fillScreen(int color) {
  44:uc_libc_dev/graphic/gfx/gfx.c **** //  	if(buffer) {
  45:uc_libc_dev/graphic/gfx/gfx.c **** //   	 	u8 hi = color >> 8, lo = color & 0xFF;
  46:uc_libc_dev/graphic/gfx/gfx.c **** //    	if(hi == lo) {
  47:uc_libc_dev/graphic/gfx/gfx.c **** //      		memset(buffer, lo, gfxWIDTH * gfxHEIGHT * 2);
  48:uc_libc_dev/graphic/gfx/gfx.c **** //    	} else {
  49:uc_libc_dev/graphic/gfx/gfx.c **** //      		int i, pixels = gfxWIDTH * gfxHEIGHT;
  50:uc_libc_dev/graphic/gfx/gfx.c **** //      		for(i=0; i<pixels; i++) buffer[i] = color;
  51:uc_libc_dev/graphic/gfx/gfx.c **** //    	}
  52:uc_libc_dev/graphic/gfx/gfx.c **** //  	}
  53:uc_libc_dev/graphic/gfx/gfx.c **** //}
  54:uc_libc_dev/graphic/gfx/gfx.c **** 
  55:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_SetRotation(u8 x) {
  92              		.loc 1 55 0
  93              		.cfi_startproc
  94              		@ args = 0, pretend = 0, frame = 0
  95              		@ frame_needed = 0, uses_anonymous_args = 0
  96              		@ link register save eliminated.
  97              	.LVL0:
  98 0000 00F00300 		and	r0, r0, #3
  99              	.LVL1:
  56:uc_libc_dev/graphic/gfx/gfx.c ****   	rotation = (x & 3);
 100              		.loc 1 56 0
 101 0004 094B     		ldr	r3, .L16
  57:uc_libc_dev/graphic/gfx/gfx.c ****   	switch(rotation) {
 102              		.loc 1 57 0
 103 0006 0128     		cmp	r0, #1
  56:uc_libc_dev/graphic/gfx/gfx.c ****   	rotation = (x & 3);
 104              		.loc 1 56 0
 105 0008 1860     		str	r0, [r3]
 106 000a 094A     		ldr	r2, .L16+4
 107 000c 094B     		ldr	r3, .L16+8
 108              		.loc 1 57 0
 109 000e 06D0     		beq	.L6
 110 0010 0328     		cmp	r0, #3
 111 0012 04D0     		beq	.L6
  58:uc_libc_dev/graphic/gfx/gfx.c ****    	case 0:
  59:uc_libc_dev/graphic/gfx/gfx.c ****    	case 2:
  60:uc_libc_dev/graphic/gfx/gfx.c ****     	_width  = gfxWIDTH;
 112              		.loc 1 60 0
 113 0014 F021     		movs	r1, #240
 114 0016 1160     		str	r1, [r2]
  61:uc_libc_dev/graphic/gfx/gfx.c ****     	_height = gfxHEIGHT;
 115              		.loc 1 61 0
 116 0018 4FF4A072 		mov	r2, #320
 117 001c 03E0     		b	.L14
 118              	.L6:
  62:uc_libc_dev/graphic/gfx/gfx.c ****     	break;
  63:uc_libc_dev/graphic/gfx/gfx.c ****    	case 1:
  64:uc_libc_dev/graphic/gfx/gfx.c ****    	case 3:
  65:uc_libc_dev/graphic/gfx/gfx.c ****     	_width  = gfxHEIGHT;
 119              		.loc 1 65 0
 120 001e 4FF4A071 		mov	r1, #320
 121 0022 1160     		str	r1, [r2]
  66:uc_libc_dev/graphic/gfx/gfx.c ****     	_height = gfxWIDTH;
 122              		.loc 1 66 0
 123 0024 F022     		movs	r2, #240
 124              	.L14:
 125 0026 1A60     		str	r2, [r3]
  67:uc_libc_dev/graphic/gfx/gfx.c ****     	break;
  68:uc_libc_dev/graphic/gfx/gfx.c ****   	}
  69:uc_libc_dev/graphic/gfx/gfx.c **** 	tft_SetRotation(rotation);
 126              		.loc 1 69 0
 127 0028 FFF7FEBF 		b	tft_SetRotation
 128              	.LVL2:
 129              	.L17:
 130              		.align	2
 131              	.L16:
 132 002c 00000000 		.word	.LANCHOR2
 133 0030 00000000 		.word	.LANCHOR0
 134 0034 00000000 		.word	.LANCHOR1
 135              		.cfi_endproc
 136              	.LFE1:
 138              		.section	.text.gfx_GetRotation,"ax",%progbits
 139              		.align	1
 140              		.global	gfx_GetRotation
 141              		.thumb
 142              		.thumb_func
 144              	gfx_GetRotation:
 145              	.LFB2:
  70:uc_libc_dev/graphic/gfx/gfx.c **** }
  71:uc_libc_dev/graphic/gfx/gfx.c **** 
  72:uc_libc_dev/graphic/gfx/gfx.c **** u8 gfx_GetRotation(void) {
 146              		.loc 1 72 0
 147              		.cfi_startproc
 148              		@ args = 0, pretend = 0, frame = 0
 149              		@ frame_needed = 0, uses_anonymous_args = 0
 150              		@ link register save eliminated.
  73:uc_libc_dev/graphic/gfx/gfx.c ****   	return rotation;
  74:uc_libc_dev/graphic/gfx/gfx.c **** }
 151              		.loc 1 74 0
 152 0000 014B     		ldr	r3, .L19
 153 0002 1878     		ldrb	r0, [r3]	@ zero_extendqisi2
 154 0004 7047     		bx	lr
 155              	.L20:
 156 0006 00BF     		.align	2
 157              	.L19:
 158 0008 00000000 		.word	.LANCHOR2
 159              		.cfi_endproc
 160              	.LFE2:
 162              		.section	.text.gfx_DrawLine,"ax",%progbits
 163              		.align	1
 164              		.global	gfx_DrawLine
 165              		.thumb
 166              		.thumb_func
 168              	gfx_DrawLine:
 169              	.LFB3:
  75:uc_libc_dev/graphic/gfx/gfx.c **** 
  76:uc_libc_dev/graphic/gfx/gfx.c **** //#################################################################################################
  77:uc_libc_dev/graphic/gfx/gfx.c **** // PRIMITIVES
  78:uc_libc_dev/graphic/gfx/gfx.c **** //#################################################################################################
  79:uc_libc_dev/graphic/gfx/gfx.c **** #define gfx_DrawPixel tft_DrawPixel
  80:uc_libc_dev/graphic/gfx/gfx.c **** //void gfx_DrawPixel(int x, int y, int color) {
  81:uc_libc_dev/graphic/gfx/gfx.c ****   	//tft_DrawPixel(x, y, color);
  82:uc_libc_dev/graphic/gfx/gfx.c ****   	//if(!buffer) return;
  83:uc_libc_dev/graphic/gfx/gfx.c ****     //if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return;
  84:uc_libc_dev/graphic/gfx/gfx.c **** //    int t;
  85:uc_libc_dev/graphic/gfx/gfx.c **** //    switch(rotation) {
  86:uc_libc_dev/graphic/gfx/gfx.c **** //    case 1:
  87:uc_libc_dev/graphic/gfx/gfx.c **** //    	t = x;
  88:uc_libc_dev/graphic/gfx/gfx.c **** //    	x = gfxWIDTH  - 1 - y;
  89:uc_libc_dev/graphic/gfx/gfx.c **** //    	y = t;
  90:uc_libc_dev/graphic/gfx/gfx.c **** //    	break;
  91:uc_libc_dev/graphic/gfx/gfx.c **** //    case 2:
  92:uc_libc_dev/graphic/gfx/gfx.c **** //    	x = gfxWIDTH  - 1 - x;
  93:uc_libc_dev/graphic/gfx/gfx.c **** //    	y = gfxHEIGHT - 1 - y;
  94:uc_libc_dev/graphic/gfx/gfx.c **** //    	break;
  95:uc_libc_dev/graphic/gfx/gfx.c **** //     case 3:
  96:uc_libc_dev/graphic/gfx/gfx.c **** //     	t = x;
  97:uc_libc_dev/graphic/gfx/gfx.c **** //     	x = y;
  98:uc_libc_dev/graphic/gfx/gfx.c **** //     	y = gfxHEIGHT - 1 - t;
  99:uc_libc_dev/graphic/gfx/gfx.c **** //     	break;
 100:uc_libc_dev/graphic/gfx/gfx.c **** //	}
 101:uc_libc_dev/graphic/gfx/gfx.c **** //	buffer[x + y * gfxWIDTH] = color;
 102:uc_libc_dev/graphic/gfx/gfx.c **** //}
 103:uc_libc_dev/graphic/gfx/gfx.c **** 
 104:uc_libc_dev/graphic/gfx/gfx.c **** // Bresenham's algorithm - thx wikpedia
 105:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_DrawLine(int x0, int y0, int x1, int y1, int color) {
 170              		.loc 1 105 0
 171              		.cfi_startproc
 172              		@ args = 4, pretend = 0, frame = 8
 173              		@ frame_needed = 0, uses_anonymous_args = 0
 174              	.LVL3:
 175 0000 2DE9F74F 		push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
 176              	.LCFI0:
 177              		.cfi_def_cfa_offset 48
 178              		.cfi_offset 4, -36
 179              		.cfi_offset 5, -32
 180              		.cfi_offset 6, -28
 181              		.cfi_offset 7, -24
 182              		.cfi_offset 8, -20
 183              		.cfi_offset 9, -16
 184              		.cfi_offset 10, -12
 185              		.cfi_offset 11, -8
 186              		.cfi_offset 14, -4
 106:uc_libc_dev/graphic/gfx/gfx.c ****   	int steep = abs(y1 - y0) > abs(x1 - x0);
 187              		.loc 1 106 0
 188 0004 C1EB0308 		rsb	r8, r1, r3
 105:uc_libc_dev/graphic/gfx/gfx.c ****   	int steep = abs(y1 - y0) > abs(x1 - x0);
 189              		.loc 1 105 0
 190 0008 1E46     		mov	r6, r3
 191              		.loc 1 106 0
 192 000a 4346     		mov	r3, r8
 193              	.LVL4:
 194 000c C0EB0209 		rsb	r9, r0, r2
 195 0010 002B     		cmp	r3, #0
 196 0012 B8BF     		it	lt
 197 0014 5B42     		rsblt	r3, r3, #0
 198 0016 B9F1000F 		cmp	r9, #0
 199 001a B8BF     		it	lt
 200 001c C9F10009 		rsblt	r9, r9, #0
 201              	.LVL5:
 107:uc_libc_dev/graphic/gfx/gfx.c ****   	if (steep) {
 202              		.loc 1 107 0
 203 0020 4B45     		cmp	r3, r9
 105:uc_libc_dev/graphic/gfx/gfx.c ****   	int steep = abs(y1 - y0) > abs(x1 - x0);
 204              		.loc 1 105 0
 205 0022 0446     		mov	r4, r0
 206 0024 0D46     		mov	r5, r1
 207 0026 1746     		mov	r7, r2
 106:uc_libc_dev/graphic/gfx/gfx.c ****   	int steep = abs(y1 - y0) > abs(x1 - x0);
 208              		.loc 1 106 0
 209 0028 0093     		str	r3, [sp]
 210              	.LVL6:
 211              		.loc 1 107 0
 212 002a 03DD     		ble	.L22
 213              	.LBB47:
 108:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(x0, y0);
 109:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(x1, y1);
 214              		.loc 1 109 0
 215 002c 3746     		mov	r7, r6
 216              	.LBE47:
 217              	.LBB48:
 108:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(x0, y0);
 218              		.loc 1 108 0
 219 002e 0C46     		mov	r4, r1
 220              	.LBE48:
 221              	.LBB49:
 222              		.loc 1 109 0
 223 0030 1646     		mov	r6, r2
 224              	.LVL7:
 225              	.LBE49:
 226              	.LBB50:
 108:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(x0, y0);
 227              		.loc 1 108 0
 228 0032 0546     		mov	r5, r0
 229              	.LVL8:
 230              	.L22:
 231              	.LBE50:
 110:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 111:uc_libc_dev/graphic/gfx/gfx.c **** 
 112:uc_libc_dev/graphic/gfx/gfx.c ****   	if (x0 > x1) {
 232              		.loc 1 112 0
 233 0034 BC42     		cmp	r4, r7
 234 0036 05DD     		ble	.L23
 235 0038 2B46     		mov	r3, r5
 236              	.LBB51:
 113:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(x0, x1);
 114:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(y0, y1);
 237              		.loc 1 114 0
 238 003a 3546     		mov	r5, r6
 239              	.LVL9:
 240 003c 1E46     		mov	r6, r3
 241              	.LVL10:
 242              	.LBE51:
 112:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(x0, x1);
 243              		.loc 1 112 0
 244 003e 2346     		mov	r3, r4
 245              	.LVL11:
 246 0040 3C46     		mov	r4, r7
 247              	.LVL12:
 248 0042 1F46     		mov	r7, r3
 249              	.LVL13:
 250              	.L23:
 115:uc_libc_dev/graphic/gfx/gfx.c **** 	}
 116:uc_libc_dev/graphic/gfx/gfx.c **** 
 117:uc_libc_dev/graphic/gfx/gfx.c ****   	int dx, dy;
 118:uc_libc_dev/graphic/gfx/gfx.c ****   	dx = x1 - x0;
 119:uc_libc_dev/graphic/gfx/gfx.c ****   	dy = abs(y1 - y0);
 251              		.loc 1 119 0
 252 0044 731B     		subs	r3, r6, r5
 253 0046 002B     		cmp	r3, #0
 254 0048 B8BF     		it	lt
 255 004a 5B42     		rsblt	r3, r3, #0
 118:uc_libc_dev/graphic/gfx/gfx.c ****   	dy = abs(y1 - y0);
 256              		.loc 1 118 0
 257 004c C4EB070A 		rsb	r10, r4, r7
 258              	.LVL14:
 259              		.loc 1 119 0
 260 0050 0193     		str	r3, [sp, #4]
 261              	.LVL15:
 120:uc_libc_dev/graphic/gfx/gfx.c **** 
 121:uc_libc_dev/graphic/gfx/gfx.c ****   	int err = dx / 2;
 262              		.loc 1 121 0
 263 0052 0223     		movs	r3, #2
 264              	.LVL16:
 265 0054 9AFBF3F8 		sdiv	r8, r10, r3
 266              	.LVL17:
 122:uc_libc_dev/graphic/gfx/gfx.c ****   	int ystep;
 123:uc_libc_dev/graphic/gfx/gfx.c **** 
 124:uc_libc_dev/graphic/gfx/gfx.c ****   	if (y0 < y1) ystep = 1; else ystep = -1;
 267              		.loc 1 124 0
 268 0058 B542     		cmp	r5, r6
 269 005a B4BF     		ite	lt
 270 005c 0126     		movlt	r6, #1
 271 005e 4FF0FF36 		movge	r6, #-1
 272              	.LVL18:
 273 0062 BDF830B0 		ldrh	fp, [sp, #48]
 274              	.L25:
 125:uc_libc_dev/graphic/gfx/gfx.c **** 
 126:uc_libc_dev/graphic/gfx/gfx.c ****   	for (; x0<=x1; x0++) {
 275              		.loc 1 126 0 discriminator 1
 276 0066 BC42     		cmp	r4, r7
 277 0068 13DC     		bgt	.L32
 127:uc_libc_dev/graphic/gfx/gfx.c ****     	if (steep) {
 278              		.loc 1 127 0
 279 006a 009B     		ldr	r3, [sp]
 280 006c 20B2     		sxth	r0, r4
 281 006e 4B45     		cmp	r3, r9
 282 0070 0FFA85FE 		sxth	lr, r5
 128:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(y0, x0, color);
 283              		.loc 1 128 0
 284 0074 CABF     		itet	gt
 285 0076 0146     		movgt	r1, r0
 129:uc_libc_dev/graphic/gfx/gfx.c ****     	} else {
 130:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0, y0, color);
 286              		.loc 1 130 0
 287 0078 7146     		movle	r1, lr
 128:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(y0, x0, color);
 288              		.loc 1 128 0
 289 007a 7046     		movgt	r0, lr
 290 007c 5A46     		mov	r2, fp
 291              		.loc 1 130 0
 292 007e FFF7FEFF 		bl	tft_DrawPixel
 293              	.LVL19:
 131:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 132:uc_libc_dev/graphic/gfx/gfx.c ****     	err -= dy;
 133:uc_libc_dev/graphic/gfx/gfx.c ****     	if (err < 0) {
 294              		.loc 1 133 0
 295 0082 019B     		ldr	r3, [sp, #4]
 126:uc_libc_dev/graphic/gfx/gfx.c ****     	if (steep) {
 296              		.loc 1 126 0
 297 0084 0134     		adds	r4, r4, #1
 298              	.LVL20:
 299              		.loc 1 133 0
 300 0086 B8EB0308 		subs	r8, r8, r3
 301              	.LVL21:
 134:uc_libc_dev/graphic/gfx/gfx.c ****       		y0 += ystep;
 302              		.loc 1 134 0
 303 008a 44BF     		itt	mi
 304 008c AD19     		addmi	r5, r5, r6
 305              	.LVL22:
 135:uc_libc_dev/graphic/gfx/gfx.c ****       		err += dx;
 306              		.loc 1 135 0
 307 008e D044     		addmi	r8, r8, r10
 308              	.LVL23:
 309 0090 E9E7     		b	.L25
 310              	.L32:
 136:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 137:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 138:uc_libc_dev/graphic/gfx/gfx.c **** }
 311              		.loc 1 138 0
 312 0092 03B0     		add	sp, sp, #12
 313              	.LCFI1:
 314              		.cfi_def_cfa_offset 36
 315              		@ sp needed
 316 0094 BDE8F08F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
 317              		.cfi_endproc
 318              	.LFE3:
 320              		.section	.text.gfx_DrawFastVLine,"ax",%progbits
 321              		.align	1
 322              		.global	gfx_DrawFastVLine
 323              		.thumb
 324              		.thumb_func
 326              	gfx_DrawFastVLine:
 327              	.LFB4:
 139:uc_libc_dev/graphic/gfx/gfx.c **** 
 140:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_DrawFastVLine(s16 x, s16 y, s16 h, uint color) {
 328              		.loc 1 140 0
 329              		.cfi_startproc
 330              		@ args = 0, pretend = 0, frame = 0
 331              		@ frame_needed = 0, uses_anonymous_args = 0
 332              		@ link register save eliminated.
 333              	.LVL24:
 141:uc_libc_dev/graphic/gfx/gfx.c ****   	// Update in subclasses if desired!
 142:uc_libc_dev/graphic/gfx/gfx.c ****   	//gfx_DrawLine(x, y, x, y+h-1, color); // se usar buffer
 143:uc_libc_dev/graphic/gfx/gfx.c ****   	tft_DrawFastVLine(x, y, h, color);
 334              		.loc 1 143 0
 335 0000 9BB2     		uxth	r3, r3
 336              	.LVL25:
 337 0002 FFF7FEBF 		b	tft_DrawFastVLine
 338              	.LVL26:
 339              		.cfi_endproc
 340              	.LFE4:
 342              		.section	.text.gfx_DrawFastHLine,"ax",%progbits
 343              		.align	1
 344              		.global	gfx_DrawFastHLine
 345              		.thumb
 346              		.thumb_func
 348              	gfx_DrawFastHLine:
 349              	.LFB5:
 144:uc_libc_dev/graphic/gfx/gfx.c **** }
 145:uc_libc_dev/graphic/gfx/gfx.c **** 
 146:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_DrawFastHLine(s16 x, s16 y, s16 w, uint color) {
 350              		.loc 1 146 0
 351              		.cfi_startproc
 352              		@ args = 0, pretend = 0, frame = 0
 353              		@ frame_needed = 0, uses_anonymous_args = 0
 354              		@ link register save eliminated.
 355              	.LVL27:
 147:uc_libc_dev/graphic/gfx/gfx.c ****   	// Update in subclasses if desired!
 148:uc_libc_dev/graphic/gfx/gfx.c ****   	//gfx_DrawLine(x, y, x+w-1, y, color); // se usar buffer
 149:uc_libc_dev/graphic/gfx/gfx.c **** 
 150:uc_libc_dev/graphic/gfx/gfx.c ****   	tft_DrawFastHLine(x, y, w, color);
 356              		.loc 1 150 0
 357 0000 9BB2     		uxth	r3, r3
 358              	.LVL28:
 359 0002 FFF7FEBF 		b	tft_DrawFastHLine
 360              	.LVL29:
 361              		.cfi_endproc
 362              	.LFE5:
 364              		.section	.text.gfx_FillRect,"ax",%progbits
 365              		.align	1
 366              		.global	gfx_FillRect
 367              		.thumb
 368              		.thumb_func
 370              	gfx_FillRect:
 371              	.LFB6:
 151:uc_libc_dev/graphic/gfx/gfx.c **** }
 152:uc_libc_dev/graphic/gfx/gfx.c **** 
 153:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_FillRect(int x, int y, int w, int h, uint color) {
 372              		.loc 1 153 0
 373              		.cfi_startproc
 374              		@ args = 4, pretend = 0, frame = 0
 375              		@ frame_needed = 0, uses_anonymous_args = 0
 376              	.LVL30:
 377 0000 2DE9F041 		push	{r4, r5, r6, r7, r8, lr}
 378              	.LCFI2:
 379              		.cfi_def_cfa_offset 24
 380              		.cfi_offset 4, -24
 381              		.cfi_offset 5, -20
 382              		.cfi_offset 6, -16
 383              		.cfi_offset 7, -12
 384              		.cfi_offset 8, -8
 385              		.cfi_offset 14, -4
 386              		.loc 1 153 0
 387 0004 0E46     		mov	r6, r1
 154:uc_libc_dev/graphic/gfx/gfx.c ****   	// Update in subclasses if desired!
 155:uc_libc_dev/graphic/gfx/gfx.c ****   	int i; for (i=x; i<x+w; i++) gfx_DrawFastVLine(i, y, h, color);
 388              		.loc 1 155 0
 389 0006 0446     		mov	r4, r0
 390              	.LBB52:
 391              	.LBB53:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 392              		.loc 1 143 0
 393 0008 BDF81870 		ldrh	r7, [sp, #24]
 394              	.LBE53:
 395              	.LBE52:
 396              		.loc 1 155 0
 397 000c 8518     		adds	r5, r0, r2
 398              	.LBB56:
 399              	.LBB54:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 400              		.loc 1 143 0
 401 000e 0FFA83F8 		sxth	r8, r3
 402              	.LVL31:
 403              	.L36:
 404              	.LBE54:
 405              	.LBE56:
 406              		.loc 1 155 0 discriminator 1
 407 0012 AC42     		cmp	r4, r5
 408 0014 07DA     		bge	.L38
 409              	.LVL32:
 410              	.LBB57:
 411              	.LBB55:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 412              		.loc 1 143 0 discriminator 3
 413 0016 20B2     		sxth	r0, r4
 414 0018 3B46     		mov	r3, r7
 415 001a 4246     		mov	r2, r8
 416 001c 31B2     		sxth	r1, r6
 417 001e FFF7FEFF 		bl	tft_DrawFastVLine
 418              	.LVL33:
 419              	.LBE55:
 420              	.LBE57:
 421              		.loc 1 155 0 discriminator 3
 422 0022 0134     		adds	r4, r4, #1
 423              	.LVL34:
 424 0024 F5E7     		b	.L36
 425              	.L38:
 156:uc_libc_dev/graphic/gfx/gfx.c ****   	// tft_FillRect(x, y, w, h, color); // se usar buffer
 157:uc_libc_dev/graphic/gfx/gfx.c **** }
 426              		.loc 1 157 0
 427 0026 BDE8F081 		pop	{r4, r5, r6, r7, r8, pc}
 428              		.cfi_endproc
 429              	.LFE6:
 431              		.section	.text.gfx_FillScreen,"ax",%progbits
 432              		.align	1
 433              		.global	gfx_FillScreen
 434              		.thumb
 435              		.thumb_func
 437              	gfx_FillScreen:
 438              	.LFB7:
 158:uc_libc_dev/graphic/gfx/gfx.c **** 
 159:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_FillScreen(uint color) {
 439              		.loc 1 159 0
 440              		.cfi_startproc
 441              		@ args = 0, pretend = 0, frame = 0
 442              		@ frame_needed = 0, uses_anonymous_args = 0
 443              	.LVL35:
 444 0000 07B5     		push	{r0, r1, r2, lr}
 445              	.LCFI3:
 446              		.cfi_def_cfa_offset 16
 447              		.cfi_offset 14, -4
 160:uc_libc_dev/graphic/gfx/gfx.c ****   	 gfx_FillRect(0, 0, _width, _height, color);
 448              		.loc 1 160 0
 449 0002 064B     		ldr	r3, .L40
 450 0004 064A     		ldr	r2, .L40+4
 451 0006 0090     		str	r0, [sp]
 452 0008 0021     		movs	r1, #0
 453 000a 1B68     		ldr	r3, [r3]
 454 000c 1268     		ldr	r2, [r2]
 455 000e 0846     		mov	r0, r1
 456              	.LVL36:
 457 0010 FFF7FEFF 		bl	gfx_FillRect
 458              	.LVL37:
 161:uc_libc_dev/graphic/gfx/gfx.c ****   	 // tft_FillRect(0, 0, _width,_heighth, color); // se usar buffer
 162:uc_libc_dev/graphic/gfx/gfx.c **** 	//  if(buffer) {
 163:uc_libc_dev/graphic/gfx/gfx.c **** 	//    uint16_t bytes = ((WIDTH + 7) / 8) * HEIGHT;
 164:uc_libc_dev/graphic/gfx/gfx.c **** 	//    memset(buffer, color ? 0xFF : 0x00, bytes);
 165:uc_libc_dev/graphic/gfx/gfx.c **** 	//  }
 166:uc_libc_dev/graphic/gfx/gfx.c **** }
 459              		.loc 1 166 0
 460 0014 03B0     		add	sp, sp, #12
 461              	.LCFI4:
 462              		.cfi_def_cfa_offset 4
 463              		@ sp needed
 464 0016 5DF804FB 		ldr	pc, [sp], #4
 465              	.L41:
 466 001a 00BF     		.align	2
 467              	.L40:
 468 001c 00000000 		.word	.LANCHOR1
 469 0020 00000000 		.word	.LANCHOR0
 470              		.cfi_endproc
 471              	.LFE7:
 473              		.section	.text.gfx_DrawRect,"ax",%progbits
 474              		.align	1
 475              		.global	gfx_DrawRect
 476              		.thumb
 477              		.thumb_func
 479              	gfx_DrawRect:
 480              	.LFB8:
 167:uc_libc_dev/graphic/gfx/gfx.c **** 
 168:uc_libc_dev/graphic/gfx/gfx.c **** // Draw a rectangle
 169:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_DrawRect(int x, int y, int w, int h, uint color) {
 481              		.loc 1 169 0
 482              		.cfi_startproc
 483              		@ args = 4, pretend = 0, frame = 0
 484              		@ frame_needed = 0, uses_anonymous_args = 0
 485              	.LVL38:
 486 0000 2DE9F14F 		push	{r0, r4, r5, r6, r7, r8, r9, r10, fp, lr}
 487              	.LCFI5:
 488              		.cfi_def_cfa_offset 40
 489              		.cfi_offset 4, -36
 490              		.cfi_offset 5, -32
 491              		.cfi_offset 6, -28
 492              		.cfi_offset 7, -24
 493              		.cfi_offset 8, -20
 494              		.cfi_offset 9, -16
 495              		.cfi_offset 10, -12
 496              		.cfi_offset 11, -8
 497              		.cfi_offset 14, -4
 498              		.loc 1 169 0
 499 0004 1C46     		mov	r4, r3
 500 0006 8946     		mov	r9, r1
 501              	.LBB58:
 502              	.LBB59:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 503              		.loc 1 150 0
 504 0008 BDF82860 		ldrh	r6, [sp, #40]
 505              	.LBE59:
 506              	.LBE58:
 170:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawFastHLine(x, y, w, color);
 507              		.loc 1 170 0
 508 000c 0FFA80FA 		sxth	r10, r0
 509 0010 0FFA81F8 		sxth	r8, r1
 510 0014 0FFA82FB 		sxth	fp, r2
 511              	.LVL39:
 169:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawFastHLine(x, y, w, color);
 512              		.loc 1 169 0
 513 0018 0546     		mov	r5, r0
 514 001a 1746     		mov	r7, r2
 515              	.LBB61:
 516              	.LBB60:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 517              		.loc 1 150 0
 518 001c 3346     		mov	r3, r6
 519              	.LVL40:
 520 001e 5A46     		mov	r2, fp
 521              	.LVL41:
 522 0020 4146     		mov	r1, r8
 523              	.LVL42:
 524 0022 5046     		mov	r0, r10
 525              	.LVL43:
 526 0024 FFF7FEFF 		bl	tft_DrawFastHLine
 527              	.LVL44:
 528              	.LBE60:
 529              	.LBE61:
 530              	.LBB62:
 531              	.LBB63:
 532 0028 611E     		subs	r1, r4, #1
 533 002a 4944     		add	r1, r1, r9
 534 002c 3346     		mov	r3, r6
 535 002e 5A46     		mov	r2, fp
 536 0030 5046     		mov	r0, r10
 537              	.LBE63:
 538              	.LBE62:
 171:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawFastHLine(x, y+h-1, w, color);
 172:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawFastVLine(x, y, h, color);
 539              		.loc 1 172 0
 540 0032 24B2     		sxth	r4, r4
 541              	.LVL45:
 542              	.LBB65:
 543              	.LBB64:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 544              		.loc 1 150 0
 545 0034 09B2     		sxth	r1, r1
 546 0036 FFF7FEFF 		bl	tft_DrawFastHLine
 547              	.LVL46:
 548              	.LBE64:
 549              	.LBE65:
 550              	.LBB66:
 551              	.LBB67:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 552              		.loc 1 143 0
 553 003a 3346     		mov	r3, r6
 554 003c 2246     		mov	r2, r4
 555 003e 4146     		mov	r1, r8
 556 0040 5046     		mov	r0, r10
 557 0042 FFF7FEFF 		bl	tft_DrawFastVLine
 558              	.LVL47:
 559              	.LBE67:
 560              	.LBE66:
 561              	.LBB68:
 562              	.LBB69:
 563 0046 3346     		mov	r3, r6
 564 0048 2246     		mov	r2, r4
 565 004a 4146     		mov	r1, r8
 566 004c 781E     		subs	r0, r7, #1
 567 004e 2844     		add	r0, r0, r5
 568 0050 00B2     		sxth	r0, r0
 569              	.LBE69:
 570              	.LBE68:
 173:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawFastVLine(x+w-1, y, h, color);
 174:uc_libc_dev/graphic/gfx/gfx.c **** }
 571              		.loc 1 174 0
 572 0052 01B0     		add	sp, sp, #4
 573              	.LCFI6:
 574              		.cfi_def_cfa_offset 36
 575              		@ sp needed
 576 0054 BDE8F04F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 577              	.LCFI7:
 578              		.cfi_restore 14
 579              		.cfi_restore 11
 580              		.cfi_restore 10
 581              		.cfi_restore 9
 582              		.cfi_restore 8
 583              		.cfi_restore 7
 584              		.cfi_restore 6
 585              		.cfi_restore 5
 586              		.cfi_restore 4
 587              		.cfi_def_cfa_offset 0
 588              	.LVL48:
 589              	.LBB71:
 590              	.LBB70:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 591              		.loc 1 143 0
 592 0058 FFF7FEBF 		b	tft_DrawFastVLine
 593              	.LVL49:
 594              	.LBE70:
 595              	.LBE71:
 596              		.cfi_endproc
 597              	.LFE8:
 599              		.section	.text.gfx_DrawTriangle,"ax",%progbits
 600              		.align	1
 601              		.global	gfx_DrawTriangle
 602              		.thumb
 603              		.thumb_func
 605              	gfx_DrawTriangle:
 606              	.LFB9:
 175:uc_libc_dev/graphic/gfx/gfx.c **** 
 176:uc_libc_dev/graphic/gfx/gfx.c **** // Draw a triangle
 177:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_DrawTriangle(int x0, int y0, int x1, int y1, int x2, int y2, uint color) {
 607              		.loc 1 177 0
 608              		.cfi_startproc
 609              		@ args = 12, pretend = 0, frame = 0
 610              		@ frame_needed = 0, uses_anonymous_args = 0
 611              	.LVL50:
 612 0000 2DE9F347 		push	{r0, r1, r4, r5, r6, r7, r8, r9, r10, lr}
 613              	.LCFI8:
 614              		.cfi_def_cfa_offset 40
 615              		.cfi_offset 4, -32
 616              		.cfi_offset 5, -28
 617              		.cfi_offset 6, -24
 618              		.cfi_offset 7, -20
 619              		.cfi_offset 8, -16
 620              		.cfi_offset 9, -12
 621              		.cfi_offset 10, -8
 622              		.cfi_offset 14, -4
 623              		.loc 1 177 0
 624 0004 9146     		mov	r9, r2
 625 0006 9A46     		mov	r10, r3
 626 0008 0746     		mov	r7, r0
 627 000a 8846     		mov	r8, r1
 628 000c 0C9C     		ldr	r4, [sp, #48]
 629 000e 0A9D     		ldr	r5, [sp, #40]
 630 0010 0B9E     		ldr	r6, [sp, #44]
 178:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawLine(x0, y0, x1, y1, color);
 631              		.loc 1 178 0
 632 0012 0094     		str	r4, [sp]
 633 0014 FFF7FEFF 		bl	gfx_DrawLine
 634              	.LVL51:
 179:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawLine(x1, y1, x2, y2, color);
 635              		.loc 1 179 0
 636 0018 3346     		mov	r3, r6
 637 001a 2A46     		mov	r2, r5
 638 001c 5146     		mov	r1, r10
 639 001e 4846     		mov	r0, r9
 640 0020 0094     		str	r4, [sp]
 641 0022 FFF7FEFF 		bl	gfx_DrawLine
 642              	.LVL52:
 180:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawLine(x2, y2, x0, y0, color);
 643              		.loc 1 180 0
 644 0026 4346     		mov	r3, r8
 645 0028 3A46     		mov	r2, r7
 646 002a 3146     		mov	r1, r6
 647 002c 2846     		mov	r0, r5
 648 002e 0A94     		str	r4, [sp, #40]
 181:uc_libc_dev/graphic/gfx/gfx.c **** }
 649              		.loc 1 181 0
 650 0030 02B0     		add	sp, sp, #8
 651              	.LCFI9:
 652              		.cfi_def_cfa_offset 32
 653              		@ sp needed
 654 0032 BDE8F047 		pop	{r4, r5, r6, r7, r8, r9, r10, lr}
 655              	.LCFI10:
 656              		.cfi_restore 14
 657              		.cfi_restore 10
 658              		.cfi_restore 9
 659              		.cfi_restore 8
 660              		.cfi_restore 7
 661              		.cfi_restore 6
 662              		.cfi_restore 5
 663              		.cfi_restore 4
 664              		.cfi_def_cfa_offset 0
 665              	.LVL53:
 180:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawLine(x2, y2, x0, y0, color);
 666              		.loc 1 180 0
 667 0036 FFF7FEBF 		b	gfx_DrawLine
 668              	.LVL54:
 669              		.cfi_endproc
 670              	.LFE9:
 672              		.section	.text.gfx_FillTriangle,"ax",%progbits
 673              		.align	1
 674              		.global	gfx_FillTriangle
 675              		.thumb
 676              		.thumb_func
 678              	gfx_FillTriangle:
 679              	.LFB10:
 182:uc_libc_dev/graphic/gfx/gfx.c **** 
 183:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_FillTriangle(int x0, int y0, int x1, int y1, int x2, int y2, uint color) {
 680              		.loc 1 183 0
 681              		.cfi_startproc
 682              		@ args = 12, pretend = 0, frame = 40
 683              		@ frame_needed = 0, uses_anonymous_args = 0
 684              	.LVL55:
 685 0000 2DE9F04F 		push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 686              	.LCFI11:
 687              		.cfi_def_cfa_offset 36
 688              		.cfi_offset 4, -36
 689              		.cfi_offset 5, -32
 690              		.cfi_offset 6, -28
 691              		.cfi_offset 7, -24
 692              		.cfi_offset 8, -20
 693              		.cfi_offset 9, -16
 694              		.cfi_offset 10, -12
 695              		.cfi_offset 11, -8
 696              		.cfi_offset 14, -4
 697 0004 0D46     		mov	r5, r1
 698 0006 1E46     		mov	r6, r3
 699 0008 8BB0     		sub	sp, sp, #44
 700              	.LCFI12:
 701              		.cfi_def_cfa_offset 80
 702              		.loc 1 183 0
 703 000a 1699     		ldr	r1, [sp, #88]
 704              	.LVL56:
 184:uc_libc_dev/graphic/gfx/gfx.c ****   	int a, b, y, last;
 185:uc_libc_dev/graphic/gfx/gfx.c **** 
 186:uc_libc_dev/graphic/gfx/gfx.c ****   	// Sort coordinates by Y order (y2 >= y1 >= y0)
 187:uc_libc_dev/graphic/gfx/gfx.c ****   	if (y0 > y1) {
 705              		.loc 1 187 0
 706 000c B542     		cmp	r5, r6
 183:uc_libc_dev/graphic/gfx/gfx.c ****   	int a, b, y, last;
 707              		.loc 1 183 0
 708 000e 1746     		mov	r7, r2
 709 0010 0446     		mov	r4, r0
 710 0012 149A     		ldr	r2, [sp, #80]
 711              	.LVL57:
 712 0014 159B     		ldr	r3, [sp, #84]
 713              	.LVL58:
 714 0016 0291     		str	r1, [sp, #8]
 715              		.loc 1 187 0
 716 0018 05DD     		ble	.L45
 717              	.LVL59:
 188:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(y0, y1); swap_int16(x0, x1);
 189:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 190:uc_libc_dev/graphic/gfx/gfx.c ****   	if (y1 > y2) {
 718              		.loc 1 190 0
 719 001a 9D42     		cmp	r5, r3
 720 001c 0DDD     		ble	.L59
 721 001e A946     		mov	r9, r5
 722              	.LBB72:
 188:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(y0, y1); swap_int16(x0, x1);
 723              		.loc 1 188 0
 724 0020 3C46     		mov	r4, r7
 725              	.LBE72:
 726 0022 3546     		mov	r5, r6
 727              	.LVL60:
 728 0024 04E0     		b	.L58
 729              	.LVL61:
 730              	.L45:
 731              		.loc 1 190 0
 732 0026 9E42     		cmp	r6, r3
 733 0028 40F39580 		ble	.L64
 734 002c B146     		mov	r9, r6
 735 002e 3846     		mov	r0, r7
 736              	.LVL62:
 737              	.L58:
 191:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(y2, y1); swap_int16(x2, x1);
 192:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 193:uc_libc_dev/graphic/gfx/gfx.c ****   	if (y0 > y1) {
 738              		.loc 1 193 0
 739 0030 AB42     		cmp	r3, r5
 740 0032 0BDB     		blt	.L60
 741 0034 1E46     		mov	r6, r3
 742 0036 1746     		mov	r7, r2
 743 0038 0CE0     		b	.L47
 744              	.LVL63:
 745              	.L59:
 746 003a 9946     		mov	r9, r3
 747 003c 3346     		mov	r3, r6
 748 003e 2E46     		mov	r6, r5
 749              	.LVL64:
 750 0040 1D46     		mov	r5, r3
 751              	.LVL65:
 752 0042 3B46     		mov	r3, r7
 753              	.LVL66:
 754 0044 1046     		mov	r0, r2
 755              	.LVL67:
 756              	.LBB73:
 188:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(y0, y1); swap_int16(x0, x1);
 757              		.loc 1 188 0
 758 0046 2746     		mov	r7, r4
 759              	.LVL68:
 760 0048 1C46     		mov	r4, r3
 761              	.LVL69:
 762 004a 03E0     		b	.L47
 763              	.LVL70:
 764              	.L60:
 765              	.LBE73:
 766 004c 2E46     		mov	r6, r5
 767 004e 2746     		mov	r7, r4
 768 0050 1D46     		mov	r5, r3
 769              	.LVL71:
 770 0052 1446     		mov	r4, r2
 771              	.LVL72:
 772              	.L47:
 194:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(y0, y1); swap_int16(x0, x1);
 195:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 196:uc_libc_dev/graphic/gfx/gfx.c **** 
 197:uc_libc_dev/graphic/gfx/gfx.c ****   	if(y0 == y2) { // Handle awkward all-on-same-line case as its own thing
 773              		.loc 1 197 0
 774 0054 4D45     		cmp	r5, r9
 775 0056 19D1     		bne	.L48
 776              	.LVL73:
 198:uc_libc_dev/graphic/gfx/gfx.c ****     	a = b = x0;
 199:uc_libc_dev/graphic/gfx/gfx.c ****     	if(x1 < a)      a = x1;
 777              		.loc 1 199 0
 778 0058 BC42     		cmp	r4, r7
 779 005a 05DC     		bgt	.L49
 780 005c A742     		cmp	r7, r4
 781 005e 3B46     		mov	r3, r7
 782 0060 B8BF     		it	lt
 783 0062 2346     		movlt	r3, r4
 784 0064 2746     		mov	r7, r4
 785              	.LVL74:
 786 0066 1C46     		mov	r4, r3
 787              	.LVL75:
 788              	.L49:
 200:uc_libc_dev/graphic/gfx/gfx.c ****     	else if(x1 > b) b = x1;
 201:uc_libc_dev/graphic/gfx/gfx.c ****     	if(x2 < a)      a = x2;
 789              		.loc 1 201 0
 790 0068 8742     		cmp	r7, r0
 791 006a 03DC     		bgt	.L50
 792 006c 8442     		cmp	r4, r0
 793 006e B8BF     		it	lt
 794 0070 0446     		movlt	r4, r0
 795              	.LVL76:
 796 0072 3846     		mov	r0, r7
 797              	.L50:
 798              	.LVL77:
 799              	.LBB74:
 800              	.LBB75:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 801              		.loc 1 150 0
 802 0074 621C     		adds	r2, r4, #1
 803 0076 121A     		subs	r2, r2, r0
 804 0078 BDF80830 		ldrh	r3, [sp, #8]
 805 007c 12B2     		sxth	r2, r2
 806 007e 29B2     		sxth	r1, r5
 807 0080 00B2     		sxth	r0, r0
 808              	.LVL78:
 809              	.LBE75:
 810              	.LBE74:
 202:uc_libc_dev/graphic/gfx/gfx.c ****     	else if(x2 > b) b = x2;
 203:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawFastHLine(a, y0, b-a+1, color);
 204:uc_libc_dev/graphic/gfx/gfx.c ****     	return;
 205:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 206:uc_libc_dev/graphic/gfx/gfx.c **** 
 207:uc_libc_dev/graphic/gfx/gfx.c ****   	int
 208:uc_libc_dev/graphic/gfx/gfx.c ****     	dx01 = x1 - x0,
 209:uc_libc_dev/graphic/gfx/gfx.c ****     	dy01 = y1 - y0,
 210:uc_libc_dev/graphic/gfx/gfx.c ****     	dx02 = x2 - x0,
 211:uc_libc_dev/graphic/gfx/gfx.c ****     	dy02 = y2 - y0,
 212:uc_libc_dev/graphic/gfx/gfx.c ****     	dx12 = x2 - x1,
 213:uc_libc_dev/graphic/gfx/gfx.c ****     	dy12 = y2 - y1;
 214:uc_libc_dev/graphic/gfx/gfx.c ****   	s32
 215:uc_libc_dev/graphic/gfx/gfx.c ****     	sa   = 0,
 216:uc_libc_dev/graphic/gfx/gfx.c ****     	sb   = 0;
 217:uc_libc_dev/graphic/gfx/gfx.c **** 
 218:uc_libc_dev/graphic/gfx/gfx.c ****   	// For upper part of triangle, find scanline crossings for segments
 219:uc_libc_dev/graphic/gfx/gfx.c ****   	// 0-1 and 0-2.  If y1=y2 (flat-bottomed triangle), the scanline y1
 220:uc_libc_dev/graphic/gfx/gfx.c ****   	// is included here (and second loop will be skipped, avoiding a /0
 221:uc_libc_dev/graphic/gfx/gfx.c ****   	// error there), otherwise scanline y1 is skipped here and handled
 222:uc_libc_dev/graphic/gfx/gfx.c ****   	// in the second loop...which also avoids a /0 error here if y0=y1
 223:uc_libc_dev/graphic/gfx/gfx.c ****   	// (flat-topped triangle).
 224:uc_libc_dev/graphic/gfx/gfx.c ****   	if(y1 == y2) last = y1;   // Include y1 scanline
 225:uc_libc_dev/graphic/gfx/gfx.c ****   	else         last = y1-1; // Skip it
 226:uc_libc_dev/graphic/gfx/gfx.c **** 
 227:uc_libc_dev/graphic/gfx/gfx.c ****   	for(y=y0; y<=last; y++) {
 228:uc_libc_dev/graphic/gfx/gfx.c ****     	a   = x0 + sa / dy01;
 229:uc_libc_dev/graphic/gfx/gfx.c ****     	b   = x0 + sb / dy02;
 230:uc_libc_dev/graphic/gfx/gfx.c ****     	sa += dx01;
 231:uc_libc_dev/graphic/gfx/gfx.c ****     	sb += dx02;
 232:uc_libc_dev/graphic/gfx/gfx.c ****     	if(a > b) swap_int16(a,b);
 233:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawFastHLine(a, y, b-a+1, color);
 234:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 235:uc_libc_dev/graphic/gfx/gfx.c **** 
 236:uc_libc_dev/graphic/gfx/gfx.c ****   	// For lower part of triangle, find scanline crossings for segments
 237:uc_libc_dev/graphic/gfx/gfx.c ****   	// 0-2 and 1-2.  This loop is skipped if y1=y2.
 238:uc_libc_dev/graphic/gfx/gfx.c ****   	sa = dx12 * (y - y1);
 239:uc_libc_dev/graphic/gfx/gfx.c ****   	sb = dx02 * (y - y0);
 240:uc_libc_dev/graphic/gfx/gfx.c ****   	for(; y<=y2; y++) {
 241:uc_libc_dev/graphic/gfx/gfx.c ****     	a   = x1 + sa / dy12;
 242:uc_libc_dev/graphic/gfx/gfx.c ****     	b   = x0 + sb / dy02;
 243:uc_libc_dev/graphic/gfx/gfx.c ****     	sa += dx12;
 244:uc_libc_dev/graphic/gfx/gfx.c ****     	sb += dx02;
 245:uc_libc_dev/graphic/gfx/gfx.c **** 
 246:uc_libc_dev/graphic/gfx/gfx.c ****     	if(a > b) swap_int16(a,b);
 247:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawFastHLine(a, y, b-a+1, color);
 248:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 249:uc_libc_dev/graphic/gfx/gfx.c **** }
 811              		.loc 1 249 0
 812 0082 0BB0     		add	sp, sp, #44
 813              	.LCFI13:
 814              		.cfi_remember_state
 815              		.cfi_def_cfa_offset 36
 816              		@ sp needed
 817 0084 BDE8F04F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 818              	.LCFI14:
 819              		.cfi_restore 14
 820              		.cfi_restore 11
 821              		.cfi_restore 10
 822              		.cfi_restore 9
 823              		.cfi_restore 8
 824              		.cfi_restore 7
 825              		.cfi_restore 6
 826              		.cfi_restore 5
 827              		.cfi_restore 4
 828              		.cfi_def_cfa_offset 0
 829              	.LVL79:
 830              	.LBB77:
 831              	.LBB76:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 832              		.loc 1 150 0
 833 0088 FFF7FEBF 		b	tft_DrawFastHLine
 834              	.LVL80:
 835              	.L48:
 836              	.LCFI15:
 837              		.cfi_restore_state
 838              	.LBE76:
 839              	.LBE77:
 216:uc_libc_dev/graphic/gfx/gfx.c **** 
 840              		.loc 1 216 0
 841 008c 4FF0000B 		mov	fp, #0
 227:uc_libc_dev/graphic/gfx/gfx.c ****     	a   = x0 + sa / dy01;
 842              		.loc 1 227 0
 843 0090 A846     		mov	r8, r5
 215:uc_libc_dev/graphic/gfx/gfx.c ****     	sb   = 0;
 844              		.loc 1 215 0
 845 0092 DA46     		mov	r10, fp
 208:uc_libc_dev/graphic/gfx/gfx.c ****     	dy01 = y1 - y0,
 846              		.loc 1 208 0
 847 0094 3B1B     		subs	r3, r7, r4
 848 0096 0693     		str	r3, [sp, #24]
 849              	.LVL81:
 209:uc_libc_dev/graphic/gfx/gfx.c ****     	dx02 = x2 - x0,
 850              		.loc 1 209 0
 851 0098 731B     		subs	r3, r6, r5
 852              	.LVL82:
 853 009a 0793     		str	r3, [sp, #28]
 854              	.LVL83:
 210:uc_libc_dev/graphic/gfx/gfx.c ****     	dy02 = y2 - y0,
 855              		.loc 1 210 0
 856 009c 031B     		subs	r3, r0, r4
 857              	.LVL84:
 858 009e 0193     		str	r3, [sp, #4]
 859              	.LVL85:
 211:uc_libc_dev/graphic/gfx/gfx.c ****     	dx12 = x2 - x1,
 860              		.loc 1 211 0
 861 00a0 C5EB0903 		rsb	r3, r5, r9
 862              	.LVL86:
 863 00a4 0493     		str	r3, [sp, #16]
 864              	.LVL87:
 212:uc_libc_dev/graphic/gfx/gfx.c ****     	dy12 = y2 - y1;
 865              		.loc 1 212 0
 866 00a6 C31B     		subs	r3, r0, r7
 867              	.LVL88:
 224:uc_libc_dev/graphic/gfx/gfx.c ****   	else         last = y1-1; // Skip it
 868              		.loc 1 224 0
 869 00a8 4E45     		cmp	r6, r9
 212:uc_libc_dev/graphic/gfx/gfx.c ****     	dy12 = y2 - y1;
 870              		.loc 1 212 0
 871 00aa 0593     		str	r3, [sp, #20]
 872              	.LVL89:
 213:uc_libc_dev/graphic/gfx/gfx.c ****   	s32
 873              		.loc 1 213 0
 874 00ac C6EB0903 		rsb	r3, r6, r9
 875              	.LVL90:
 876 00b0 0893     		str	r3, [sp, #32]
 877              	.LVL91:
 225:uc_libc_dev/graphic/gfx/gfx.c **** 
 878              		.loc 1 225 0
 879 00b2 1CBF     		itt	ne
 880 00b4 06F1FF33 		addne	r3, r6, #-1
 881              	.LVL92:
 882 00b8 0393     		strne	r3, [sp, #12]
 883              	.LVL93:
 884              	.LBB78:
 885              	.LBB79:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 886              		.loc 1 150 0
 887 00ba BDF80830 		ldrh	r3, [sp, #8]
 888              	.LBE79:
 889              	.LBE78:
 890 00be 08BF     		it	eq
 891 00c0 0396     		streq	r6, [sp, #12]
 892              	.LVL94:
 893              	.LBB83:
 894              	.LBB80:
 895 00c2 0993     		str	r3, [sp, #36]
 896              	.LVL95:
 897              	.L52:
 898              	.LBE80:
 899              	.LBE83:
 227:uc_libc_dev/graphic/gfx/gfx.c ****     	a   = x0 + sa / dy01;
 900              		.loc 1 227 0 discriminator 1
 901 00c4 039B     		ldr	r3, [sp, #12]
 902 00c6 9845     		cmp	r8, r3
 903 00c8 1CDC     		bgt	.L65
 228:uc_libc_dev/graphic/gfx/gfx.c ****     	b   = x0 + sb / dy02;
 904              		.loc 1 228 0
 905 00ca 079B     		ldr	r3, [sp, #28]
 906              	.LBB84:
 907              	.LBB81:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 908              		.loc 1 150 0
 909 00cc 0FFA88F1 		sxth	r1, r8
 910              	.LBE81:
 911              	.LBE84:
 228:uc_libc_dev/graphic/gfx/gfx.c ****     	b   = x0 + sb / dy02;
 912              		.loc 1 228 0
 913 00d0 9AFBF3F0 		sdiv	r0, r10, r3
 229:uc_libc_dev/graphic/gfx/gfx.c ****     	sa += dx01;
 914              		.loc 1 229 0
 915 00d4 049B     		ldr	r3, [sp, #16]
 228:uc_libc_dev/graphic/gfx/gfx.c ****     	b   = x0 + sb / dy02;
 916              		.loc 1 228 0
 917 00d6 2044     		add	r0, r0, r4
 918              	.LVL96:
 229:uc_libc_dev/graphic/gfx/gfx.c ****     	sa += dx01;
 919              		.loc 1 229 0
 920 00d8 9BFBF3F2 		sdiv	r2, fp, r3
 230:uc_libc_dev/graphic/gfx/gfx.c ****     	sb += dx02;
 921              		.loc 1 230 0
 922 00dc 069B     		ldr	r3, [sp, #24]
 229:uc_libc_dev/graphic/gfx/gfx.c ****     	sa += dx01;
 923              		.loc 1 229 0
 924 00de 2244     		add	r2, r2, r4
 925              	.LVL97:
 230:uc_libc_dev/graphic/gfx/gfx.c ****     	sb += dx02;
 926              		.loc 1 230 0
 927 00e0 9A44     		add	r10, r10, r3
 928              	.LVL98:
 231:uc_libc_dev/graphic/gfx/gfx.c ****     	if(a > b) swap_int16(a,b);
 929              		.loc 1 231 0
 930 00e2 019B     		ldr	r3, [sp, #4]
 232:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawFastHLine(a, y, b-a+1, color);
 931              		.loc 1 232 0
 932 00e4 9042     		cmp	r0, r2
 231:uc_libc_dev/graphic/gfx/gfx.c ****     	if(a > b) swap_int16(a,b);
 933              		.loc 1 231 0
 934 00e6 9B44     		add	fp, fp, r3
 935              	.LVL99:
 232:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawFastHLine(a, y, b-a+1, color);
 936              		.loc 1 232 0
 937 00e8 C2BF     		ittt	gt
 938 00ea 0346     		movgt	r3, r0
 939 00ec 1046     		movgt	r0, r2
 940              	.LVL100:
 941 00ee 1A46     		movgt	r2, r3
 942              	.LVL101:
 943              	.LBB85:
 944              	.LBB82:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 945              		.loc 1 150 0
 946 00f0 0132     		adds	r2, r2, #1
 947              	.LVL102:
 948 00f2 121A     		subs	r2, r2, r0
 949              	.LVL103:
 950 00f4 099B     		ldr	r3, [sp, #36]
 951 00f6 12B2     		sxth	r2, r2
 952 00f8 00B2     		sxth	r0, r0
 953              	.LVL104:
 954 00fa FFF7FEFF 		bl	tft_DrawFastHLine
 955              	.LVL105:
 956              	.LBE82:
 957              	.LBE85:
 227:uc_libc_dev/graphic/gfx/gfx.c ****     	a   = x0 + sa / dy01;
 958              		.loc 1 227 0
 959 00fe 08F10108 		add	r8, r8, #1
 960              	.LVL106:
 961 0102 DFE7     		b	.L52
 962              	.L65:
 238:uc_libc_dev/graphic/gfx/gfx.c ****   	sb = dx02 * (y - y0);
 963              		.loc 1 238 0
 964 0104 059B     		ldr	r3, [sp, #20]
 965 0106 C6EB0806 		rsb	r6, r6, r8
 966              	.LVL107:
 967 010a 5E43     		muls	r6, r3, r6
 968              	.LVL108:
 239:uc_libc_dev/graphic/gfx/gfx.c ****   	for(; y<=y2; y++) {
 969              		.loc 1 239 0
 970 010c 019B     		ldr	r3, [sp, #4]
 971 010e C5EB0805 		rsb	r5, r5, r8
 972              	.LVL109:
 973 0112 5D43     		muls	r5, r3, r5
 974              	.LVL110:
 975              	.LBB86:
 976              	.LBB87:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 977              		.loc 1 150 0
 978 0114 BDF808A0 		ldrh	r10, [sp, #8]
 979              	.L55:
 980              	.LBE87:
 981              	.LBE86:
 240:uc_libc_dev/graphic/gfx/gfx.c ****     	a   = x1 + sa / dy12;
 982              		.loc 1 240 0 discriminator 1
 983 0118 C845     		cmp	r8, r9
 984 011a 1FDC     		bgt	.L66
 241:uc_libc_dev/graphic/gfx/gfx.c ****     	b   = x0 + sb / dy02;
 985              		.loc 1 241 0
 986 011c 089B     		ldr	r3, [sp, #32]
 987              	.LBB90:
 988              	.LBB88:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 989              		.loc 1 150 0
 990 011e 0FFA88F1 		sxth	r1, r8
 991              	.LBE88:
 992              	.LBE90:
 241:uc_libc_dev/graphic/gfx/gfx.c ****     	b   = x0 + sb / dy02;
 993              		.loc 1 241 0
 994 0122 96FBF3F0 		sdiv	r0, r6, r3
 242:uc_libc_dev/graphic/gfx/gfx.c ****     	sa += dx12;
 995              		.loc 1 242 0
 996 0126 049B     		ldr	r3, [sp, #16]
 241:uc_libc_dev/graphic/gfx/gfx.c ****     	b   = x0 + sb / dy02;
 997              		.loc 1 241 0
 998 0128 3844     		add	r0, r0, r7
 999              	.LVL111:
 242:uc_libc_dev/graphic/gfx/gfx.c ****     	sa += dx12;
 1000              		.loc 1 242 0
 1001 012a 95FBF3F2 		sdiv	r2, r5, r3
 243:uc_libc_dev/graphic/gfx/gfx.c ****     	sb += dx02;
 1002              		.loc 1 243 0
 1003 012e 059B     		ldr	r3, [sp, #20]
 242:uc_libc_dev/graphic/gfx/gfx.c ****     	sa += dx12;
 1004              		.loc 1 242 0
 1005 0130 2244     		add	r2, r2, r4
 1006              	.LVL112:
 243:uc_libc_dev/graphic/gfx/gfx.c ****     	sb += dx02;
 1007              		.loc 1 243 0
 1008 0132 1E44     		add	r6, r6, r3
 1009              	.LVL113:
 244:uc_libc_dev/graphic/gfx/gfx.c **** 
 1010              		.loc 1 244 0
 1011 0134 019B     		ldr	r3, [sp, #4]
 246:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawFastHLine(a, y, b-a+1, color);
 1012              		.loc 1 246 0
 1013 0136 9042     		cmp	r0, r2
 244:uc_libc_dev/graphic/gfx/gfx.c **** 
 1014              		.loc 1 244 0
 1015 0138 1D44     		add	r5, r5, r3
 1016              	.LVL114:
 246:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawFastHLine(a, y, b-a+1, color);
 1017              		.loc 1 246 0
 1018 013a C2BF     		ittt	gt
 1019 013c 0346     		movgt	r3, r0
 1020 013e 1046     		movgt	r0, r2
 1021              	.LVL115:
 1022 0140 1A46     		movgt	r2, r3
 1023              	.LVL116:
 1024              	.LBB91:
 1025              	.LBB89:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 1026              		.loc 1 150 0
 1027 0142 0132     		adds	r2, r2, #1
 1028              	.LVL117:
 1029 0144 121A     		subs	r2, r2, r0
 1030              	.LVL118:
 1031 0146 5346     		mov	r3, r10
 1032 0148 12B2     		sxth	r2, r2
 1033 014a 00B2     		sxth	r0, r0
 1034              	.LVL119:
 1035 014c FFF7FEFF 		bl	tft_DrawFastHLine
 1036              	.LVL120:
 1037              	.LBE89:
 1038              	.LBE91:
 240:uc_libc_dev/graphic/gfx/gfx.c ****     	a   = x1 + sa / dy12;
 1039              		.loc 1 240 0
 1040 0150 08F10108 		add	r8, r8, #1
 1041              	.LVL121:
 1042 0154 E0E7     		b	.L55
 1043              	.LVL122:
 1044              	.L64:
 190:uc_libc_dev/graphic/gfx/gfx.c ****     	swap_int16(y2, y1); swap_int16(x2, x1);
 1045              		.loc 1 190 0
 1046 0156 9946     		mov	r9, r3
 1047 0158 1046     		mov	r0, r2
 1048              	.LVL123:
 1049 015a 7BE7     		b	.L47
 1050              	.LVL124:
 1051              	.L66:
 1052              		.loc 1 249 0
 1053 015c 0BB0     		add	sp, sp, #44
 1054              	.LCFI16:
 1055              		.cfi_def_cfa_offset 36
 1056              		@ sp needed
 1057 015e BDE8F08F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
 1058              		.cfi_endproc
 1059              	.LFE10:
 1061              		.section	.text.gfx_DrawCircle,"ax",%progbits
 1062              		.align	1
 1063              		.global	gfx_DrawCircle
 1064              		.thumb
 1065              		.thumb_func
 1067              	gfx_DrawCircle:
 1068              	.LFB11:
 250:uc_libc_dev/graphic/gfx/gfx.c **** 
 251:uc_libc_dev/graphic/gfx/gfx.c **** // Draw a circle outline
 252:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_DrawCircle(int x0, int y0, int r, uint color) {
 1069              		.loc 1 252 0
 1070              		.cfi_startproc
 1071              		@ args = 0, pretend = 0, frame = 16
 1072              		@ frame_needed = 0, uses_anonymous_args = 0
 1073              	.LVL125:
 1074 0000 2DE9F04F 		push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 1075              	.LCFI17:
 1076              		.cfi_def_cfa_offset 36
 1077              		.cfi_offset 4, -36
 1078              		.cfi_offset 5, -32
 1079              		.cfi_offset 6, -28
 1080              		.cfi_offset 7, -24
 1081              		.cfi_offset 8, -20
 1082              		.cfi_offset 9, -16
 1083              		.cfi_offset 10, -12
 1084              		.cfi_offset 11, -8
 1085              		.cfi_offset 14, -4
 1086 0004 1646     		mov	r6, r2
 1087 0006 0546     		mov	r5, r0
 1088 0008 8A46     		mov	r10, r1
 253:uc_libc_dev/graphic/gfx/gfx.c ****   	int f = 1 - r;
 1089              		.loc 1 253 0
 1090 000a C2F10107 		rsb	r7, r2, #1
 1091              	.LVL126:
 254:uc_libc_dev/graphic/gfx/gfx.c ****  	int ddF_x = 1;
 255:uc_libc_dev/graphic/gfx/gfx.c ****   	int ddF_y = -2 * r;
 1092              		.loc 1 255 0
 1093 000e 6FF00102 		mvn	r2, #1
 1094              	.LVL127:
 1095 0012 7243     		muls	r2, r6, r2
 256:uc_libc_dev/graphic/gfx/gfx.c ****   	int x = 0;
 257:uc_libc_dev/graphic/gfx/gfx.c ****   	int y = r;
 258:uc_libc_dev/graphic/gfx/gfx.c **** 
 259:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawPixel(x0  , y0+r, color);
 1096              		.loc 1 259 0
 1097 0014 1FFA86F9 		uxth	r9, r6
 1098 0018 1FFA81F8 		uxth	r8, r1
 1099 001c 9CB2     		uxth	r4, r3
 252:uc_libc_dev/graphic/gfx/gfx.c ****   	int f = 1 - r;
 1100              		.loc 1 252 0
 1101 001e 85B0     		sub	sp, sp, #20
 1102              	.LCFI18:
 1103              		.cfi_def_cfa_offset 56
 1104              		.loc 1 259 0
 1105 0020 0FFA80FB 		sxth	fp, r0
 1106 0024 08EB0901 		add	r1, r8, r9
 1107              	.LVL128:
 255:uc_libc_dev/graphic/gfx/gfx.c ****   	int x = 0;
 1108              		.loc 1 255 0
 1109 0028 0292     		str	r2, [sp, #8]
 1110              	.LVL129:
 1111              		.loc 1 259 0
 1112 002a 09B2     		sxth	r1, r1
 1113 002c 2246     		mov	r2, r4
 1114              	.LVL130:
 1115 002e 5846     		mov	r0, fp
 1116              	.LVL131:
 1117 0030 FFF7FEFF 		bl	tft_DrawPixel
 1118              	.LVL132:
 260:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawPixel(x0  , y0-r, color);
 1119              		.loc 1 260 0
 1120 0034 C9EB0801 		rsb	r1, r9, r8
 1121 0038 2246     		mov	r2, r4
 1122 003a 09B2     		sxth	r1, r1
 1123 003c 5846     		mov	r0, fp
 261:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawPixel(x0+r, y0  , color);
 1124              		.loc 1 261 0
 1125 003e ADB2     		uxth	r5, r5
 1126              	.LVL133:
 260:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawPixel(x0  , y0-r, color);
 1127              		.loc 1 260 0
 1128 0040 FFF7FEFF 		bl	tft_DrawPixel
 1129              	.LVL134:
 1130              		.loc 1 261 0
 1131 0044 0FFA8AFA 		sxth	r10, r10
 1132              	.LVL135:
 1133 0048 09EB0500 		add	r0, r9, r5
 1134 004c 2246     		mov	r2, r4
 1135 004e 5146     		mov	r1, r10
 1136 0050 00B2     		sxth	r0, r0
 1137 0052 FFF7FEFF 		bl	tft_DrawPixel
 1138              	.LVL136:
 262:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawPixel(x0-r, y0  , color);
 1139              		.loc 1 262 0
 1140 0056 C9EB0500 		rsb	r0, r9, r5
 1141 005a 2246     		mov	r2, r4
 1142 005c 5146     		mov	r1, r10
 1143 005e 00B2     		sxth	r0, r0
 1144 0060 FFF7FEFF 		bl	tft_DrawPixel
 1145              	.LVL137:
 256:uc_libc_dev/graphic/gfx/gfx.c ****   	int y = r;
 1146              		.loc 1 256 0
 1147 0064 4FF00009 		mov	r9, #0
 1148              	.LVL138:
 1149              	.L68:
 263:uc_libc_dev/graphic/gfx/gfx.c **** 
 264:uc_libc_dev/graphic/gfx/gfx.c ****   	while (x<y) {
 1150              		.loc 1 264 0
 1151 0068 B145     		cmp	r9, r6
 1152 006a 5FDA     		bge	.L71
 265:uc_libc_dev/graphic/gfx/gfx.c ****   		if (f >= 0) {
 1153              		.loc 1 265 0
 1154 006c 002F     		cmp	r7, #0
 1155 006e 04DB     		blt	.L69
 266:uc_libc_dev/graphic/gfx/gfx.c ****       		y--;
 267:uc_libc_dev/graphic/gfx/gfx.c ****       		ddF_y += 2;
 1156              		.loc 1 267 0
 1157 0070 029B     		ldr	r3, [sp, #8]
 266:uc_libc_dev/graphic/gfx/gfx.c ****       		y--;
 1158              		.loc 1 266 0
 1159 0072 013E     		subs	r6, r6, #1
 1160              	.LVL139:
 1161              		.loc 1 267 0
 1162 0074 0233     		adds	r3, r3, #2
 1163 0076 0293     		str	r3, [sp, #8]
 1164              	.LVL140:
 268:uc_libc_dev/graphic/gfx/gfx.c ****       		f += ddF_y;
 1165              		.loc 1 268 0
 1166 0078 1F44     		add	r7, r7, r3
 1167              	.LVL141:
 1168              	.L69:
 269:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 270:uc_libc_dev/graphic/gfx/gfx.c ****     	x++;
 1169              		.loc 1 270 0
 1170 007a 09F10109 		add	r9, r9, #1
 1171              	.LVL142:
 271:uc_libc_dev/graphic/gfx/gfx.c ****     	ddF_x += 2;
 272:uc_libc_dev/graphic/gfx/gfx.c ****     	f += ddF_x;
 273:uc_libc_dev/graphic/gfx/gfx.c **** 
 274:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawPixel(x0 + x, y0 + y, color);
 1172              		.loc 1 274 0
 1173 007e B2B2     		uxth	r2, r6
 1174 0080 1FFA89F3 		uxth	r3, r9
 1175 0084 0193     		str	r3, [sp, #4]
 1176 0086 08EB020B 		add	fp, r8, r2
 1177 008a EB18     		adds	r3, r5, r3
 1178 008c 1BB2     		sxth	r3, r3
 1179 008e 0FFA8BFB 		sxth	fp, fp
 1180 0092 0092     		str	r2, [sp]
 1181 0094 5946     		mov	r1, fp
 1182 0096 2246     		mov	r2, r4
 1183 0098 1846     		mov	r0, r3
 1184 009a 0393     		str	r3, [sp, #12]
 1185 009c FFF7FEFF 		bl	tft_DrawPixel
 1186              	.LVL143:
 1187 00a0 019B     		ldr	r3, [sp, #4]
 275:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawPixel(x0 - x, y0 + y, color);
 1188              		.loc 1 275 0
 1189 00a2 2246     		mov	r2, r4
 1190 00a4 C3EB050A 		rsb	r10, r3, r5
 1191 00a8 0FFA8AFA 		sxth	r10, r10
 1192 00ac 5946     		mov	r1, fp
 1193 00ae 5046     		mov	r0, r10
 1194 00b0 FFF7FEFF 		bl	tft_DrawPixel
 1195              	.LVL144:
 276:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawPixel(x0 + x, y0 - y, color);
 1196              		.loc 1 276 0
 1197 00b4 009B     		ldr	r3, [sp]
 1198 00b6 2246     		mov	r2, r4
 1199 00b8 C3EB080B 		rsb	fp, r3, r8
 1200 00bc 039B     		ldr	r3, [sp, #12]
 1201 00be 0FFA8BFB 		sxth	fp, fp
 1202 00c2 1846     		mov	r0, r3
 1203 00c4 5946     		mov	r1, fp
 1204 00c6 FFF7FEFF 		bl	tft_DrawPixel
 1205              	.LVL145:
 277:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawPixel(x0 - x, y0 - y, color);
 1206              		.loc 1 277 0
 1207 00ca 2246     		mov	r2, r4
 1208 00cc 5946     		mov	r1, fp
 1209 00ce 5046     		mov	r0, r10
 1210 00d0 FFF7FEFF 		bl	tft_DrawPixel
 1211              	.LVL146:
 278:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawPixel(x0 + y, y0 + x, color);
 1212              		.loc 1 278 0
 1213 00d4 009B     		ldr	r3, [sp]
 1214 00d6 2246     		mov	r2, r4
 1215 00d8 05EB030A 		add	r10, r5, r3
 1216 00dc 019B     		ldr	r3, [sp, #4]
 1217 00de 0FFA8AFA 		sxth	r10, r10
 1218 00e2 08EB030B 		add	fp, r8, r3
 1219 00e6 0FFA8BFB 		sxth	fp, fp
 1220 00ea 5946     		mov	r1, fp
 1221 00ec 5046     		mov	r0, r10
 1222 00ee FFF7FEFF 		bl	tft_DrawPixel
 1223              	.LVL147:
 279:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawPixel(x0 - y, y0 + x, color);
 1224              		.loc 1 279 0
 1225 00f2 009B     		ldr	r3, [sp]
 1226 00f4 2246     		mov	r2, r4
 1227 00f6 EB1A     		subs	r3, r5, r3
 1228 00f8 1BB2     		sxth	r3, r3
 1229 00fa 5946     		mov	r1, fp
 1230 00fc 1846     		mov	r0, r3
 1231 00fe 0093     		str	r3, [sp]
 1232 0100 FFF7FEFF 		bl	tft_DrawPixel
 1233              	.LVL148:
 1234 0104 019B     		ldr	r3, [sp, #4]
 280:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawPixel(x0 + y, y0 - x, color);
 1235              		.loc 1 280 0
 1236 0106 2246     		mov	r2, r4
 1237 0108 C3EB080B 		rsb	fp, r3, r8
 1238 010c 0FFA8BFB 		sxth	fp, fp
 1239 0110 5946     		mov	r1, fp
 1240 0112 5046     		mov	r0, r10
 1241 0114 FFF7FEFF 		bl	tft_DrawPixel
 1242              	.LVL149:
 281:uc_libc_dev/graphic/gfx/gfx.c ****     	gfx_DrawPixel(x0 - y, y0 - x, color);
 1243              		.loc 1 281 0
 1244 0118 009B     		ldr	r3, [sp]
 272:uc_libc_dev/graphic/gfx/gfx.c **** 
 1245              		.loc 1 272 0
 1246 011a 07EB4907 		add	r7, r7, r9, lsl #1
 1247              	.LVL150:
 1248              		.loc 1 281 0
 1249 011e 2246     		mov	r2, r4
 1250 0120 5946     		mov	r1, fp
 1251 0122 1846     		mov	r0, r3
 272:uc_libc_dev/graphic/gfx/gfx.c **** 
 1252              		.loc 1 272 0
 1253 0124 0137     		adds	r7, r7, #1
 1254              	.LVL151:
 1255              		.loc 1 281 0
 1256 0126 FFF7FEFF 		bl	tft_DrawPixel
 1257              	.LVL152:
 1258 012a 9DE7     		b	.L68
 1259              	.L71:
 282:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 283:uc_libc_dev/graphic/gfx/gfx.c **** }
 1260              		.loc 1 283 0
 1261 012c 05B0     		add	sp, sp, #20
 1262              	.LCFI19:
 1263              		.cfi_def_cfa_offset 36
 1264              		@ sp needed
 1265 012e BDE8F08F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
 1266              		.cfi_endproc
 1267              	.LFE11:
 1269              		.section	.text.gfx_DrawCircleHelper,"ax",%progbits
 1270              		.align	1
 1271              		.global	gfx_DrawCircleHelper
 1272              		.thumb
 1273              		.thumb_func
 1275              	gfx_DrawCircleHelper:
 1276              	.LFB12:
 284:uc_libc_dev/graphic/gfx/gfx.c **** 
 285:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_DrawCircleHelper( int x0, int y0, int r, uint cornername, uint color) {
 1277              		.loc 1 285 0
 1278              		.cfi_startproc
 1279              		@ args = 4, pretend = 0, frame = 16
 1280              		@ frame_needed = 0, uses_anonymous_args = 0
 1281              	.LVL153:
 1282 0000 2DE9F04F 		push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 1283              	.LCFI20:
 1284              		.cfi_def_cfa_offset 36
 1285              		.cfi_offset 4, -36
 1286              		.cfi_offset 5, -32
 1287              		.cfi_offset 6, -28
 1288              		.cfi_offset 7, -24
 1289              		.cfi_offset 8, -20
 1290              		.cfi_offset 9, -16
 1291              		.cfi_offset 10, -12
 1292              		.cfi_offset 11, -8
 1293              		.cfi_offset 14, -4
 1294 0004 9B46     		mov	fp, r3
 1295 0006 1446     		mov	r4, r2
 286:uc_libc_dev/graphic/gfx/gfx.c ****   	int f     = 1 - r;
 287:uc_libc_dev/graphic/gfx/gfx.c ****   	int ddF_x = 1;
 288:uc_libc_dev/graphic/gfx/gfx.c ****   	int ddF_y = -2 * r;
 1296              		.loc 1 288 0
 1297 0008 6FF00103 		mvn	r3, #1
 1298              	.LVL154:
 1299 000c 5343     		muls	r3, r2, r3
 285:uc_libc_dev/graphic/gfx/gfx.c ****   	int f     = 1 - r;
 1300              		.loc 1 285 0
 1301 000e 85B0     		sub	sp, sp, #20
 1302              	.LCFI21:
 1303              		.cfi_def_cfa_offset 56
 1304              		.loc 1 288 0
 1305 0010 0193     		str	r3, [sp, #4]
 289:uc_libc_dev/graphic/gfx/gfx.c ****   	int x     = 0;
 290:uc_libc_dev/graphic/gfx/gfx.c ****   	int y     = r;
 291:uc_libc_dev/graphic/gfx/gfx.c **** 
 292:uc_libc_dev/graphic/gfx/gfx.c ****   	while (x<y) {
 293:uc_libc_dev/graphic/gfx/gfx.c ****     	if (f >= 0) {
 294:uc_libc_dev/graphic/gfx/gfx.c ****       		y--;
 295:uc_libc_dev/graphic/gfx/gfx.c ****       		ddF_y += 2;
 296:uc_libc_dev/graphic/gfx/gfx.c ****       		f     += ddF_y;
 297:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 298:uc_libc_dev/graphic/gfx/gfx.c ****     	x++;
 299:uc_libc_dev/graphic/gfx/gfx.c ****     	ddF_x += 2;
 300:uc_libc_dev/graphic/gfx/gfx.c ****     	f     += ddF_x;
 301:uc_libc_dev/graphic/gfx/gfx.c ****     	if (cornername & 0x4) {
 1306              		.loc 1 301 0
 1307 0012 0BF00403 		and	r3, fp, #4
 286:uc_libc_dev/graphic/gfx/gfx.c ****   	int ddF_x = 1;
 1308              		.loc 1 286 0
 1309 0016 C2F10108 		rsb	r8, r2, #1
 1310              	.LVL155:
 289:uc_libc_dev/graphic/gfx/gfx.c ****   	int x     = 0;
 1311              		.loc 1 289 0
 1312 001a 0025     		movs	r5, #0
 1313              		.loc 1 301 0
 1314 001c 0293     		str	r3, [sp, #8]
 302:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0 + x, y0 + y, color);
 1315              		.loc 1 302 0
 1316 001e 86B2     		uxth	r6, r0
 1317 0020 8FB2     		uxth	r7, r1
 1318              	.LVL156:
 1319              	.L73:
 292:uc_libc_dev/graphic/gfx/gfx.c ****     	if (f >= 0) {
 1320              		.loc 1 292 0
 1321 0022 A542     		cmp	r5, r4
 1322 0024 80F28180 		bge	.L92
 293:uc_libc_dev/graphic/gfx/gfx.c ****       		y--;
 1323              		.loc 1 293 0
 1324 0028 B8F1000F 		cmp	r8, #0
 1325 002c 04DB     		blt	.L74
 295:uc_libc_dev/graphic/gfx/gfx.c ****       		f     += ddF_y;
 1326              		.loc 1 295 0
 1327 002e 019B     		ldr	r3, [sp, #4]
 294:uc_libc_dev/graphic/gfx/gfx.c ****       		ddF_y += 2;
 1328              		.loc 1 294 0
 1329 0030 013C     		subs	r4, r4, #1
 1330              	.LVL157:
 295:uc_libc_dev/graphic/gfx/gfx.c ****       		f     += ddF_y;
 1331              		.loc 1 295 0
 1332 0032 0233     		adds	r3, r3, #2
 1333 0034 0193     		str	r3, [sp, #4]
 1334              	.LVL158:
 296:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 1335              		.loc 1 296 0
 1336 0036 9844     		add	r8, r8, r3
 1337              	.LVL159:
 1338              	.L74:
 298:uc_libc_dev/graphic/gfx/gfx.c ****     	ddF_x += 2;
 1339              		.loc 1 298 0
 1340 0038 0135     		adds	r5, r5, #1
 1341              	.LVL160:
 301:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0 + x, y0 + y, color);
 1342              		.loc 1 301 0
 1343 003a 029B     		ldr	r3, [sp, #8]
 300:uc_libc_dev/graphic/gfx/gfx.c ****     	if (cornername & 0x4) {
 1344              		.loc 1 300 0
 1345 003c 08EB4508 		add	r8, r8, r5, lsl #1
 1346              	.LVL161:
 1347 0040 08F10108 		add	r8, r8, #1
 1348              	.LVL162:
 301:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0 + x, y0 + y, color);
 1349              		.loc 1 301 0
 1350 0044 CBB1     		cbz	r3, .L75
 1351              		.loc 1 302 0
 1352 0046 BDF83830 		ldrh	r3, [sp, #56]
 1353 004a 1FFA85FA 		uxth	r10, r5
 1354 004e 1FFA84F9 		uxth	r9, r4
 1355 0052 07EB0901 		add	r1, r7, r9
 1356 0056 06EB0A00 		add	r0, r6, r10
 1357 005a 1A46     		mov	r2, r3
 1358 005c 09B2     		sxth	r1, r1
 1359 005e 00B2     		sxth	r0, r0
 1360 0060 0393     		str	r3, [sp, #12]
 1361 0062 FFF7FEFF 		bl	tft_DrawPixel
 1362              	.LVL163:
 303:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0 + y, y0 + x, color);
 1363              		.loc 1 303 0
 1364 0066 039B     		ldr	r3, [sp, #12]
 1365 0068 07EB0A01 		add	r1, r7, r10
 1366 006c 06EB0900 		add	r0, r6, r9
 1367 0070 1A46     		mov	r2, r3
 1368 0072 09B2     		sxth	r1, r1
 1369 0074 00B2     		sxth	r0, r0
 1370 0076 FFF7FEFF 		bl	tft_DrawPixel
 1371              	.LVL164:
 1372              	.L75:
 304:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 305:uc_libc_dev/graphic/gfx/gfx.c ****     	if (cornername & 0x2) {
 1373              		.loc 1 305 0
 1374 007a 1BF0020F 		tst	fp, #2
 1375 007e 19D0     		beq	.L76
 306:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0 + x, y0 - y, color);
 1376              		.loc 1 306 0
 1377 0080 BDF83830 		ldrh	r3, [sp, #56]
 1378 0084 1FFA85FA 		uxth	r10, r5
 1379 0088 1FFA84F9 		uxth	r9, r4
 1380 008c C9EB0701 		rsb	r1, r9, r7
 1381 0090 06EB0A00 		add	r0, r6, r10
 1382 0094 1A46     		mov	r2, r3
 1383 0096 09B2     		sxth	r1, r1
 1384 0098 00B2     		sxth	r0, r0
 1385 009a 0393     		str	r3, [sp, #12]
 1386 009c FFF7FEFF 		bl	tft_DrawPixel
 1387              	.LVL165:
 307:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0 + y, y0 - x, color);
 1388              		.loc 1 307 0
 1389 00a0 039B     		ldr	r3, [sp, #12]
 1390 00a2 CAEB0701 		rsb	r1, r10, r7
 1391 00a6 06EB0900 		add	r0, r6, r9
 1392 00aa 1A46     		mov	r2, r3
 1393 00ac 09B2     		sxth	r1, r1
 1394 00ae 00B2     		sxth	r0, r0
 1395 00b0 FFF7FEFF 		bl	tft_DrawPixel
 1396              	.LVL166:
 1397              	.L76:
 308:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 309:uc_libc_dev/graphic/gfx/gfx.c ****     	if (cornername & 0x8) {
 1398              		.loc 1 309 0
 1399 00b4 1BF0080F 		tst	fp, #8
 1400 00b8 19D0     		beq	.L77
 310:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0 - y, y0 + x, color);
 1401              		.loc 1 310 0
 1402 00ba BDF83830 		ldrh	r3, [sp, #56]
 1403 00be 1FFA84FA 		uxth	r10, r4
 1404 00c2 1FFA85F9 		uxth	r9, r5
 1405 00c6 07EB0901 		add	r1, r7, r9
 1406 00ca CAEB0600 		rsb	r0, r10, r6
 1407 00ce 1A46     		mov	r2, r3
 1408 00d0 09B2     		sxth	r1, r1
 1409 00d2 00B2     		sxth	r0, r0
 1410 00d4 0393     		str	r3, [sp, #12]
 1411 00d6 FFF7FEFF 		bl	tft_DrawPixel
 1412              	.LVL167:
 311:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0 - x, y0 + y, color);
 1413              		.loc 1 311 0
 1414 00da 039B     		ldr	r3, [sp, #12]
 1415 00dc 0AEB0701 		add	r1, r10, r7
 1416 00e0 C9EB0600 		rsb	r0, r9, r6
 1417 00e4 1A46     		mov	r2, r3
 1418 00e6 09B2     		sxth	r1, r1
 1419 00e8 00B2     		sxth	r0, r0
 1420 00ea FFF7FEFF 		bl	tft_DrawPixel
 1421              	.LVL168:
 1422              	.L77:
 312:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 313:uc_libc_dev/graphic/gfx/gfx.c ****     	if (cornername & 0x1) {
 1423              		.loc 1 313 0
 1424 00ee 1BF0010F 		tst	fp, #1
 1425 00f2 96D0     		beq	.L73
 314:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0 - y, y0 - x, color);
 1426              		.loc 1 314 0
 1427 00f4 BDF83830 		ldrh	r3, [sp, #56]
 1428 00f8 1FFA84FA 		uxth	r10, r4
 1429 00fc 1FFA85F9 		uxth	r9, r5
 1430 0100 C9EB0701 		rsb	r1, r9, r7
 1431 0104 CAEB0600 		rsb	r0, r10, r6
 1432 0108 1A46     		mov	r2, r3
 1433 010a 09B2     		sxth	r1, r1
 1434 010c 00B2     		sxth	r0, r0
 1435 010e 0393     		str	r3, [sp, #12]
 1436 0110 FFF7FEFF 		bl	tft_DrawPixel
 1437              	.LVL169:
 315:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawPixel(x0 - x, y0 - y, color);
 1438              		.loc 1 315 0
 1439 0114 039B     		ldr	r3, [sp, #12]
 1440 0116 CAEB0701 		rsb	r1, r10, r7
 1441 011a C9EB0600 		rsb	r0, r9, r6
 1442 011e 1A46     		mov	r2, r3
 1443 0120 09B2     		sxth	r1, r1
 1444 0122 00B2     		sxth	r0, r0
 1445 0124 FFF7FEFF 		bl	tft_DrawPixel
 1446              	.LVL170:
 1447 0128 7BE7     		b	.L73
 1448              	.L92:
 316:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 317:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 318:uc_libc_dev/graphic/gfx/gfx.c **** }
 1449              		.loc 1 318 0
 1450 012a 05B0     		add	sp, sp, #20
 1451              	.LCFI22:
 1452              		.cfi_def_cfa_offset 36
 1453              		@ sp needed
 1454 012c BDE8F08F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
 1455              		.cfi_endproc
 1456              	.LFE12:
 1458              		.section	.text.gfx_FillCircleHelper,"ax",%progbits
 1459              		.align	1
 1460              		.global	gfx_FillCircleHelper
 1461              		.thumb
 1462              		.thumb_func
 1464              	gfx_FillCircleHelper:
 1465              	.LFB13:
 319:uc_libc_dev/graphic/gfx/gfx.c **** 
 320:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_FillCircleHelper(int x0, int y0, int r, uint cornername, int delta, uint color) {
 1466              		.loc 1 320 0
 1467              		.cfi_startproc
 1468              		@ args = 8, pretend = 0, frame = 32
 1469              		@ frame_needed = 0, uses_anonymous_args = 0
 1470              	.LVL171:
 1471 0000 2DE9F04F 		push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 1472              	.LCFI23:
 1473              		.cfi_def_cfa_offset 36
 1474              		.cfi_offset 4, -36
 1475              		.cfi_offset 5, -32
 1476              		.cfi_offset 6, -28
 1477              		.cfi_offset 7, -24
 1478              		.cfi_offset 8, -20
 1479              		.cfi_offset 9, -16
 1480              		.cfi_offset 10, -12
 1481              		.cfi_offset 11, -8
 1482              		.cfi_offset 14, -4
 1483 0004 1446     		mov	r4, r2
 1484 0006 89B0     		sub	sp, sp, #36
 1485              	.LCFI24:
 1486              		.cfi_def_cfa_offset 72
 1487              		.loc 1 320 0
 1488 0008 0593     		str	r3, [sp, #20]
 321:uc_libc_dev/graphic/gfx/gfx.c ****   	int f     = 1 - r;
 322:uc_libc_dev/graphic/gfx/gfx.c ****   	int ddF_x = 1;
 323:uc_libc_dev/graphic/gfx/gfx.c ****   	int ddF_y = -2 * r;
 1489              		.loc 1 323 0
 1490 000a 6FF00103 		mvn	r3, #1
 1491              	.LVL172:
 1492 000e 5343     		muls	r3, r2, r3
 1493 0010 0193     		str	r3, [sp, #4]
 324:uc_libc_dev/graphic/gfx/gfx.c ****   	int x     = 0;
 1494              		.loc 1 324 0
 1495 0012 0023     		movs	r3, #0
 1496 0014 0093     		str	r3, [sp]
 325:uc_libc_dev/graphic/gfx/gfx.c ****   	int y     = r;
 326:uc_libc_dev/graphic/gfx/gfx.c **** 
 327:uc_libc_dev/graphic/gfx/gfx.c ****   	while (x<y) {
 328:uc_libc_dev/graphic/gfx/gfx.c ****     	if (f >= 0) {
 329:uc_libc_dev/graphic/gfx/gfx.c ****       		y--;
 330:uc_libc_dev/graphic/gfx/gfx.c ****       		ddF_y += 2;
 331:uc_libc_dev/graphic/gfx/gfx.c ****       		f     += ddF_y;
 332:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 333:uc_libc_dev/graphic/gfx/gfx.c ****     	x++;
 334:uc_libc_dev/graphic/gfx/gfx.c ****     	ddF_x += 2;
 335:uc_libc_dev/graphic/gfx/gfx.c ****     	f     += ddF_x;
 336:uc_libc_dev/graphic/gfx/gfx.c **** 
 337:uc_libc_dev/graphic/gfx/gfx.c ****     	if (cornername & 0x1) {
 1497              		.loc 1 337 0
 1498 0016 059B     		ldr	r3, [sp, #20]
 322:uc_libc_dev/graphic/gfx/gfx.c ****   	int ddF_y = -2 * r;
 1499              		.loc 1 322 0
 1500 0018 4FF00108 		mov	r8, #1
 1501              		.loc 1 337 0
 1502 001c 03EA0803 		and	r3, r3, r8
 1503 0020 0793     		str	r3, [sp, #28]
 338:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawFastVLine(x0+x, y0-y, 2*y+1+delta, color);
 1504              		.loc 1 338 0
 1505 0022 BDF84830 		ldrh	r3, [sp, #72]
 320:uc_libc_dev/graphic/gfx/gfx.c ****   	int f     = 1 - r;
 1506              		.loc 1 320 0
 1507 0026 0390     		str	r0, [sp, #12]
 1508              		.loc 1 338 0
 1509 0028 0293     		str	r3, [sp, #8]
 1510              	.LBB92:
 1511              	.LBB93:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1512              		.loc 1 143 0
 1513 002a 4344     		add	r3, r3, r8
 1514              	.LBE93:
 1515              	.LBE92:
 320:uc_libc_dev/graphic/gfx/gfx.c ****   	int f     = 1 - r;
 1516              		.loc 1 320 0
 1517 002c 0491     		str	r1, [sp, #16]
 321:uc_libc_dev/graphic/gfx/gfx.c ****   	int ddF_x = 1;
 1518              		.loc 1 321 0
 1519 002e C2F10107 		rsb	r7, r2, #1
 1520              	.LVL173:
 1521              	.LBB97:
 1522              	.LBB94:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1523              		.loc 1 143 0
 1524 0032 0693     		str	r3, [sp, #24]
 1525              	.LVL174:
 1526              	.L94:
 1527              	.LBE94:
 1528              	.LBE97:
 327:uc_libc_dev/graphic/gfx/gfx.c ****     	if (f >= 0) {
 1529              		.loc 1 327 0
 1530 0034 009B     		ldr	r3, [sp]
 1531 0036 A342     		cmp	r3, r4
 1532 0038 5ADA     		bge	.L105
 328:uc_libc_dev/graphic/gfx/gfx.c ****       		y--;
 1533              		.loc 1 328 0
 1534 003a 002F     		cmp	r7, #0
 1535 003c 04DB     		blt	.L95
 330:uc_libc_dev/graphic/gfx/gfx.c ****       		f     += ddF_y;
 1536              		.loc 1 330 0
 1537 003e 019B     		ldr	r3, [sp, #4]
 329:uc_libc_dev/graphic/gfx/gfx.c ****       		ddF_y += 2;
 1538              		.loc 1 329 0
 1539 0040 013C     		subs	r4, r4, #1
 1540              	.LVL175:
 330:uc_libc_dev/graphic/gfx/gfx.c ****       		f     += ddF_y;
 1541              		.loc 1 330 0
 1542 0042 0233     		adds	r3, r3, #2
 1543 0044 0193     		str	r3, [sp, #4]
 1544              	.LVL176:
 331:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 1545              		.loc 1 331 0
 1546 0046 1F44     		add	r7, r7, r3
 1547              	.LVL177:
 1548              	.L95:
 333:uc_libc_dev/graphic/gfx/gfx.c ****     	ddF_x += 2;
 1549              		.loc 1 333 0
 1550 0048 009B     		ldr	r3, [sp]
 334:uc_libc_dev/graphic/gfx/gfx.c ****     	f     += ddF_x;
 1551              		.loc 1 334 0
 1552 004a 08F10208 		add	r8, r8, #2
 1553              	.LVL178:
 333:uc_libc_dev/graphic/gfx/gfx.c ****     	ddF_x += 2;
 1554              		.loc 1 333 0
 1555 004e 0133     		adds	r3, r3, #1
 1556 0050 0093     		str	r3, [sp]
 1557              	.LVL179:
 337:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawFastVLine(x0+x, y0-y, 2*y+1+delta, color);
 1558              		.loc 1 337 0
 1559 0052 079B     		ldr	r3, [sp, #28]
 1560              	.LVL180:
 335:uc_libc_dev/graphic/gfx/gfx.c **** 
 1561              		.loc 1 335 0
 1562 0054 4744     		add	r7, r7, r8
 1563              	.LVL181:
 337:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawFastVLine(x0+x, y0-y, 2*y+1+delta, color);
 1564              		.loc 1 337 0
 1565 0056 1BB3     		cbz	r3, .L96
 1566              		.loc 1 338 0
 1567 0058 BDF80C50 		ldrh	r5, [sp, #12]
 1568 005c BDF800A0 		ldrh	r10, [sp]
 1569 0060 BDF81060 		ldrh	r6, [sp, #16]
 1570              	.LBB98:
 1571              	.LBB95:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1572              		.loc 1 143 0
 1573 0064 069B     		ldr	r3, [sp, #24]
 1574              	.LBE95:
 1575              	.LBE98:
 1576              		.loc 1 338 0
 1577 0066 1FFA84F9 		uxth	r9, r4
 1578              	.LVL182:
 1579              	.LBB99:
 1580              	.LBB96:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1581              		.loc 1 143 0
 1582 006a BDF84CB0 		ldrh	fp, [sp, #76]
 1583 006e 03EB4902 		add	r2, r3, r9, lsl #1
 1584 0072 C9EB0601 		rsb	r1, r9, r6
 1585 0076 05EB0A00 		add	r0, r5, r10
 1586 007a 5B46     		mov	r3, fp
 1587 007c 12B2     		sxth	r2, r2
 1588 007e 09B2     		sxth	r1, r1
 1589 0080 00B2     		sxth	r0, r0
 1590 0082 FFF7FEFF 		bl	tft_DrawFastVLine
 1591              	.LVL183:
 1592              	.LBE96:
 1593              	.LBE99:
 1594              	.LBB100:
 1595              	.LBB101:
 1596 0086 029B     		ldr	r3, [sp, #8]
 1597 0088 CAEB0601 		rsb	r1, r10, r6
 1598 008c 03EB0802 		add	r2, r3, r8
 1599 0090 05EB0900 		add	r0, r5, r9
 1600 0094 5B46     		mov	r3, fp
 1601 0096 12B2     		sxth	r2, r2
 1602 0098 09B2     		sxth	r1, r1
 1603 009a 00B2     		sxth	r0, r0
 1604 009c FFF7FEFF 		bl	tft_DrawFastVLine
 1605              	.LVL184:
 1606              	.L96:
 1607              	.LBE101:
 1608              	.LBE100:
 339:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawFastVLine(x0+y, y0-x, 2*x+1+delta, color);
 340:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 341:uc_libc_dev/graphic/gfx/gfx.c ****     	if (cornername & 0x2) {
 1609              		.loc 1 341 0
 1610 00a0 059B     		ldr	r3, [sp, #20]
 1611 00a2 9B07     		lsls	r3, r3, #30
 1612 00a4 C6D5     		bpl	.L94
 342:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawFastVLine(x0-x, y0-y, 2*y+1+delta, color);
 1613              		.loc 1 342 0
 1614 00a6 BDF80C50 		ldrh	r5, [sp, #12]
 1615 00aa BDF800A0 		ldrh	r10, [sp]
 1616 00ae BDF81060 		ldrh	r6, [sp, #16]
 1617              	.LBB102:
 1618              	.LBB103:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1619              		.loc 1 143 0
 1620 00b2 069B     		ldr	r3, [sp, #24]
 1621              	.LBE103:
 1622              	.LBE102:
 1623              		.loc 1 342 0
 1624 00b4 1FFA84F9 		uxth	r9, r4
 1625              	.LVL185:
 1626              	.LBB105:
 1627              	.LBB104:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1628              		.loc 1 143 0
 1629 00b8 BDF84CB0 		ldrh	fp, [sp, #76]
 1630 00bc 03EB4902 		add	r2, r3, r9, lsl #1
 1631 00c0 C9EB0601 		rsb	r1, r9, r6
 1632 00c4 CAEB0500 		rsb	r0, r10, r5
 1633 00c8 5B46     		mov	r3, fp
 1634 00ca 12B2     		sxth	r2, r2
 1635 00cc 09B2     		sxth	r1, r1
 1636 00ce 00B2     		sxth	r0, r0
 1637 00d0 FFF7FEFF 		bl	tft_DrawFastVLine
 1638              	.LVL186:
 1639              	.LBE104:
 1640              	.LBE105:
 1641              	.LBB106:
 1642              	.LBB107:
 1643 00d4 029B     		ldr	r3, [sp, #8]
 1644 00d6 CAEB0601 		rsb	r1, r10, r6
 1645 00da 03EB0802 		add	r2, r3, r8
 1646 00de C9EB0500 		rsb	r0, r9, r5
 1647 00e2 5B46     		mov	r3, fp
 1648 00e4 12B2     		sxth	r2, r2
 1649 00e6 09B2     		sxth	r1, r1
 1650 00e8 00B2     		sxth	r0, r0
 1651 00ea FFF7FEFF 		bl	tft_DrawFastVLine
 1652              	.LVL187:
 1653 00ee A1E7     		b	.L94
 1654              	.LVL188:
 1655              	.L105:
 1656              	.LBE107:
 1657              	.LBE106:
 343:uc_libc_dev/graphic/gfx/gfx.c ****       		gfx_DrawFastVLine(x0-y, y0-x, 2*x+1+delta, color);
 344:uc_libc_dev/graphic/gfx/gfx.c ****     	}
 345:uc_libc_dev/graphic/gfx/gfx.c ****   	}
 346:uc_libc_dev/graphic/gfx/gfx.c **** }
 1658              		.loc 1 346 0
 1659 00f0 09B0     		add	sp, sp, #36
 1660              	.LCFI25:
 1661              		.cfi_def_cfa_offset 36
 1662              		@ sp needed
 1663 00f2 BDE8F08F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
 1664              		.cfi_endproc
 1665              	.LFE13:
 1667              		.section	.text.gfx_FillCircle,"ax",%progbits
 1668              		.align	1
 1669              		.global	gfx_FillCircle
 1670              		.thumb
 1671              		.thumb_func
 1673              	gfx_FillCircle:
 1674              	.LFB14:
 347:uc_libc_dev/graphic/gfx/gfx.c **** 
 348:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_FillCircle(int x0, int y0, int r, uint color) {
 1675              		.loc 1 348 0
 1676              		.cfi_startproc
 1677              		@ args = 0, pretend = 0, frame = 0
 1678              		@ frame_needed = 0, uses_anonymous_args = 0
 1679              	.LVL189:
 1680 0000 F7B5     		push	{r0, r1, r2, r4, r5, r6, r7, lr}
 1681              	.LCFI26:
 1682              		.cfi_def_cfa_offset 32
 1683              		.cfi_offset 4, -20
 1684              		.cfi_offset 5, -16
 1685              		.cfi_offset 6, -12
 1686              		.cfi_offset 7, -8
 1687              		.cfi_offset 14, -4
 1688              		.loc 1 348 0
 1689 0002 0D46     		mov	r5, r1
 1690 0004 0446     		mov	r4, r0
 1691 0006 1646     		mov	r6, r2
 1692 0008 1F46     		mov	r7, r3
 349:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawFastVLine(x0, y0-r, 2*r+1, color);
 1693              		.loc 1 349 0
 1694 000a 91B2     		uxth	r1, r2
 1695              	.LVL190:
 1696              	.LBB108:
 1697              	.LBB109:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1698              		.loc 1 143 0
 1699 000c 4A00     		lsls	r2, r1, #1
 1700              	.LVL191:
 1701 000e 0132     		adds	r2, r2, #1
 1702 0010 691A     		subs	r1, r5, r1
 1703              	.LVL192:
 1704 0012 9BB2     		uxth	r3, r3
 1705              	.LVL193:
 1706 0014 12B2     		sxth	r2, r2
 1707 0016 09B2     		sxth	r1, r1
 1708 0018 00B2     		sxth	r0, r0
 1709              	.LVL194:
 1710 001a FFF7FEFF 		bl	tft_DrawFastVLine
 1711              	.LVL195:
 1712              	.LBE109:
 1713              	.LBE108:
 350:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_FillCircleHelper(x0, y0, r, 3, 0, color);
 1714              		.loc 1 350 0
 1715 001e 0023     		movs	r3, #0
 1716 0020 0093     		str	r3, [sp]
 1717 0022 0197     		str	r7, [sp, #4]
 1718 0024 0323     		movs	r3, #3
 1719 0026 3246     		mov	r2, r6
 1720 0028 2946     		mov	r1, r5
 1721 002a 2046     		mov	r0, r4
 1722 002c FFF7FEFF 		bl	gfx_FillCircleHelper
 1723              	.LVL196:
 351:uc_libc_dev/graphic/gfx/gfx.c **** }
 1724              		.loc 1 351 0
 1725 0030 03B0     		add	sp, sp, #12
 1726              	.LCFI27:
 1727              		.cfi_def_cfa_offset 20
 1728              		@ sp needed
 1729 0032 F0BD     		pop	{r4, r5, r6, r7, pc}
 1730              		.cfi_endproc
 1731              	.LFE14:
 1733              		.section	.text.gfx_DrawRoundRect,"ax",%progbits
 1734              		.align	1
 1735              		.global	gfx_DrawRoundRect
 1736              		.thumb
 1737              		.thumb_func
 1739              	gfx_DrawRoundRect:
 1740              	.LFB15:
 352:uc_libc_dev/graphic/gfx/gfx.c **** 
 353:uc_libc_dev/graphic/gfx/gfx.c **** // Draw a rounded rectangle
 354:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_DrawRoundRect(int x, int y, int w, int h, int r, uint color) {
 1741              		.loc 1 354 0
 1742              		.cfi_startproc
 1743              		@ args = 8, pretend = 0, frame = 32
 1744              		@ frame_needed = 0, uses_anonymous_args = 0
 1745              	.LVL197:
 1746 0000 2DE9F04F 		push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 1747              	.LCFI28:
 1748              		.cfi_def_cfa_offset 36
 1749              		.cfi_offset 4, -36
 1750              		.cfi_offset 5, -32
 1751              		.cfi_offset 6, -28
 1752              		.cfi_offset 7, -24
 1753              		.cfi_offset 8, -20
 1754              		.cfi_offset 9, -16
 1755              		.cfi_offset 10, -12
 1756              		.cfi_offset 11, -8
 1757              		.cfi_offset 14, -4
 1758 0004 8846     		mov	r8, r1
 1759 0006 8146     		mov	r9, r0
 1760 0008 8BB0     		sub	sp, sp, #44
 1761              	.LCFI29:
 1762              		.cfi_def_cfa_offset 80
 1763              		.loc 1 354 0
 1764 000a 149C     		ldr	r4, [sp, #80]
 1765 000c 0993     		str	r3, [sp, #36]
 355:uc_libc_dev/graphic/gfx/gfx.c ****   	// smarter version
 356:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawFastHLine(x+r  , y    , w-2*r, color); // Top
 1766              		.loc 1 356 0
 1767 000e A5B2     		uxth	r5, r4
 1768 0010 83B2     		uxth	r3, r0
 1769              	.LVL198:
 1770 0012 0393     		str	r3, [sp, #12]
 1771 0014 2B44     		add	r3, r3, r5
 354:uc_libc_dev/graphic/gfx/gfx.c ****   	// smarter version
 1772              		.loc 1 354 0
 1773 0016 0892     		str	r2, [sp, #32]
 1774              		.loc 1 356 0
 1775 0018 1BB2     		sxth	r3, r3
 1776 001a 0493     		str	r3, [sp, #16]
 1777 001c BDF82030 		ldrh	r3, [sp, #32]
 1778 0020 6E00     		lsls	r6, r5, #1
 1779 0022 0593     		str	r3, [sp, #20]
 1780 0024 B3B2     		uxth	r3, r6
 1781 0026 0693     		str	r3, [sp, #24]
 1782 0028 069A     		ldr	r2, [sp, #24]
 1783              	.LVL199:
 1784 002a 059B     		ldr	r3, [sp, #20]
 354:uc_libc_dev/graphic/gfx/gfx.c ****   	// smarter version
 1785              		.loc 1 354 0
 1786 002c 159F     		ldr	r7, [sp, #84]
 1787              		.loc 1 356 0
 1788 002e C2EB030B 		rsb	fp, r2, r3
 1789              	.LBB110:
 1790              	.LBB111:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 1791              		.loc 1 150 0
 1792 0032 1FFA87FA 		uxth	r10, r7
 1793              	.LBE111:
 1794              	.LBE110:
 1795              		.loc 1 356 0
 1796 0036 0FFA8BFB 		sxth	fp, fp
 1797              	.LVL200:
 1798              	.LBB113:
 1799              	.LBB112:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 1800              		.loc 1 150 0
 1801 003a 5346     		mov	r3, r10
 1802 003c 5A46     		mov	r2, fp
 1803 003e 0498     		ldr	r0, [sp, #16]
 1804              	.LVL201:
 1805 0040 09B2     		sxth	r1, r1
 1806              	.LVL202:
 1807 0042 FFF7FEFF 		bl	tft_DrawFastHLine
 1808              	.LVL203:
 1809              	.LBE112:
 1810              	.LBE113:
 357:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawFastHLine(x+r  , y+h-1, w-2*r, color); // Bottom
 1811              		.loc 1 357 0
 1812 0046 BDF82460 		ldrh	r6, [sp, #36]
 1813              	.LVL204:
 1814 004a 1FFA88F3 		uxth	r3, r8
 1815              	.LBB114:
 1816              	.LBB115:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 1817              		.loc 1 150 0
 1818 004e 711E     		subs	r1, r6, #1
 1819 0050 1944     		add	r1, r1, r3
 1820              	.LBE115:
 1821              	.LBE114:
 1822              		.loc 1 357 0
 1823 0052 0793     		str	r3, [sp, #28]
 1824              	.LVL205:
 1825              	.LBB117:
 1826              	.LBB116:
 150:uc_libc_dev/graphic/gfx/gfx.c **** }
 1827              		.loc 1 150 0
 1828 0054 5A46     		mov	r2, fp
 1829 0056 5346     		mov	r3, r10
 1830 0058 0498     		ldr	r0, [sp, #16]
 1831 005a 09B2     		sxth	r1, r1
 1832 005c FFF7FEFF 		bl	tft_DrawFastHLine
 1833              	.LVL206:
 1834              	.LBE116:
 1835              	.LBE117:
 358:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawFastVLine(x    , y+r  , h-2*r, color); // Left
 1836              		.loc 1 358 0
 1837 0060 079B     		ldr	r3, [sp, #28]
 1838              	.LBB118:
 1839              	.LBB119:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1840              		.loc 1 143 0
 1841 0062 0FFA89F0 		sxth	r0, r9
 1842              	.LBE119:
 1843              	.LBE118:
 1844              		.loc 1 358 0
 1845 0066 1D44     		add	r5, r5, r3
 1846 0068 069B     		ldr	r3, [sp, #24]
 1847 006a 2DB2     		sxth	r5, r5
 1848 006c F61A     		subs	r6, r6, r3
 1849 006e 36B2     		sxth	r6, r6
 1850              	.LVL207:
 1851              	.LBB121:
 1852              	.LBB120:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1853              		.loc 1 143 0
 1854 0070 5346     		mov	r3, r10
 1855 0072 3246     		mov	r2, r6
 1856 0074 2946     		mov	r1, r5
 1857 0076 FFF7FEFF 		bl	tft_DrawFastVLine
 1858              	.LVL208:
 1859              	.LBE120:
 1860              	.LBE121:
 1861              	.LBB122:
 1862              	.LBB123:
 1863 007a 059B     		ldr	r3, [sp, #20]
 1864 007c 3246     		mov	r2, r6
 1865 007e 581E     		subs	r0, r3, #1
 1866 0080 039B     		ldr	r3, [sp, #12]
 1867              	.LBE123:
 1868              	.LBE122:
 359:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawFastVLine(x+w-1, y+r  , h-2*r, color); // Right
 360:uc_libc_dev/graphic/gfx/gfx.c ****   	// draw four corners
 361:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawCircleHelper(x+r    , y+r    , r, 1, color);
 1869              		.loc 1 361 0
 1870 0082 04EB0806 		add	r6, r4, r8
 1871              	.LVL209:
 1872              	.LBB126:
 1873              	.LBB124:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1874              		.loc 1 143 0
 1875 0086 1844     		add	r0, r0, r3
 1876 0088 2946     		mov	r1, r5
 1877 008a 5346     		mov	r3, r10
 1878              	.LBE124:
 1879              	.LBE126:
 1880              		.loc 1 361 0
 1881 008c 09EB0405 		add	r5, r9, r4
 1882              	.LVL210:
 1883              	.LBB127:
 1884              	.LBB125:
 143:uc_libc_dev/graphic/gfx/gfx.c **** }
 1885              		.loc 1 143 0
 1886 0090 00B2     		sxth	r0, r0
 1887 0092 FFF7FEFF 		bl	tft_DrawFastVLine
 1888              	.LVL211:
 1889              	.LBE125:
 1890              	.LBE127:
 1891              		.loc 1 361 0
 1892 0096 2246     		mov	r2, r4
 1893 0098 3146     		mov	r1, r6
 1894 009a 2846     		mov	r0, r5
 1895 009c 0097     		str	r7, [sp]
 1896 009e 0123     		movs	r3, #1
 1897 00a0 FFF7FEFF 		bl	gfx_DrawCircleHelper
 1898              	.LVL212:
 362:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawCircleHelper(x+w-r-1, y+r    , r, 2, color);
 1899              		.loc 1 362 0
 1900 00a4 089B     		ldr	r3, [sp, #32]
 1901 00a6 2246     		mov	r2, r4
 1902 00a8 9944     		add	r9, r9, r3
 1903              	.LVL213:
 1904 00aa C4EB0909 		rsb	r9, r4, r9
 1905 00ae 09F1FF39 		add	r9, r9, #-1
 1906 00b2 3146     		mov	r1, r6
 1907 00b4 4846     		mov	r0, r9
 1908 00b6 0097     		str	r7, [sp]
 1909 00b8 0223     		movs	r3, #2
 1910 00ba FFF7FEFF 		bl	gfx_DrawCircleHelper
 1911              	.LVL214:
 363:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawCircleHelper(x+w-r-1, y+h-r-1, r, 4, color);
 1912              		.loc 1 363 0
 1913 00be 099B     		ldr	r3, [sp, #36]
 1914 00c0 2246     		mov	r2, r4
 1915 00c2 9844     		add	r8, r8, r3
 1916              	.LVL215:
 1917 00c4 C4EB0808 		rsb	r8, r4, r8
 1918 00c8 08F1FF38 		add	r8, r8, #-1
 1919 00cc 4146     		mov	r1, r8
 1920 00ce 4846     		mov	r0, r9
 1921 00d0 0097     		str	r7, [sp]
 1922 00d2 0423     		movs	r3, #4
 1923 00d4 FFF7FEFF 		bl	gfx_DrawCircleHelper
 1924              	.LVL216:
 364:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawCircleHelper(x+r    , y+h-r-1, r, 8, color);
 1925              		.loc 1 364 0
 1926 00d8 2246     		mov	r2, r4
 1927 00da 4146     		mov	r1, r8
 1928 00dc 2846     		mov	r0, r5
 1929 00de 0823     		movs	r3, #8
 1930 00e0 1497     		str	r7, [sp, #80]
 365:uc_libc_dev/graphic/gfx/gfx.c **** }
 1931              		.loc 1 365 0
 1932 00e2 0BB0     		add	sp, sp, #44
 1933              	.LCFI30:
 1934              		.cfi_def_cfa_offset 36
 1935              		@ sp needed
 1936 00e4 BDE8F04F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 1937              	.LCFI31:
 1938              		.cfi_restore 14
 1939              		.cfi_restore 11
 1940              		.cfi_restore 10
 1941              		.cfi_restore 9
 1942              		.cfi_restore 8
 1943              		.cfi_restore 7
 1944              		.cfi_restore 6
 1945              		.cfi_restore 5
 1946              		.cfi_restore 4
 1947              		.cfi_def_cfa_offset 0
 1948              	.LVL217:
 364:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_DrawCircleHelper(x+r    , y+h-r-1, r, 8, color);
 1949              		.loc 1 364 0
 1950 00e8 FFF7FEBF 		b	gfx_DrawCircleHelper
 1951              	.LVL218:
 1952              		.cfi_endproc
 1953              	.LFE15:
 1955              		.section	.text.gfx_FillRoundRect,"ax",%progbits
 1956              		.align	1
 1957              		.global	gfx_FillRoundRect
 1958              		.thumb
 1959              		.thumb_func
 1961              	gfx_FillRoundRect:
 1962              	.LFB16:
 366:uc_libc_dev/graphic/gfx/gfx.c **** 
 367:uc_libc_dev/graphic/gfx/gfx.c **** // Fill a rounded rectangle
 368:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_FillRoundRect(int x, int y, int w, int h, int r, uint color) {
 1963              		.loc 1 368 0
 1964              		.cfi_startproc
 1965              		@ args = 8, pretend = 0, frame = 0
 1966              		@ frame_needed = 0, uses_anonymous_args = 0
 1967              	.LVL219:
 1968 0000 2DE9F74F 		push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
 1969              	.LCFI32:
 1970              		.cfi_def_cfa_offset 48
 1971              		.cfi_offset 4, -36
 1972              		.cfi_offset 5, -32
 1973              		.cfi_offset 6, -28
 1974              		.cfi_offset 7, -24
 1975              		.cfi_offset 8, -20
 1976              		.cfi_offset 9, -16
 1977              		.cfi_offset 10, -12
 1978              		.cfi_offset 11, -8
 1979              		.cfi_offset 14, -4
 1980              		.loc 1 368 0
 1981 0004 8246     		mov	r10, r0
 1982 0006 1646     		mov	r6, r2
 1983 0008 1D46     		mov	r5, r3
 1984 000a 0F46     		mov	r7, r1
 1985 000c 0C9C     		ldr	r4, [sp, #48]
 1986 000e DDF83480 		ldr	r8, [sp, #52]
 369:uc_libc_dev/graphic/gfx/gfx.c ****   	// smarter version
 370:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_FillRect(x+r, y, w-2*r, h, color);
 1987              		.loc 1 370 0
 1988 0012 00EB0409 		add	r9, r0, r4
 1989 0016 4FEA440B 		lsl	fp, r4, #1
 1990 001a CBEB0202 		rsb	r2, fp, r2
 1991              	.LVL220:
 1992 001e 4846     		mov	r0, r9
 1993              	.LVL221:
 1994 0020 CDF80080 		str	r8, [sp]
 1995 0024 FFF7FEFF 		bl	gfx_FillRect
 1996              	.LVL222:
 371:uc_libc_dev/graphic/gfx/gfx.c **** 
 372:uc_libc_dev/graphic/gfx/gfx.c ****   	// draw four corners
 373:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_FillCircleHelper(x+w-r-1, y+r, r, 1, h-2*r-1, color);
 1997              		.loc 1 373 0
 1998 0028 CBEB0505 		rsb	r5, fp, r5
 1999              	.LVL223:
 2000 002c 0AEB0600 		add	r0, r10, r6
 2001 0030 2744     		add	r7, r7, r4
 2002              	.LVL224:
 2003 0032 013D     		subs	r5, r5, #1
 2004 0034 001B     		subs	r0, r0, r4
 2005 0036 2246     		mov	r2, r4
 2006 0038 3946     		mov	r1, r7
 2007 003a 8DE82001 		stmia	sp, {r5, r8}
 2008 003e 0123     		movs	r3, #1
 2009 0040 0138     		subs	r0, r0, #1
 2010 0042 FFF7FEFF 		bl	gfx_FillCircleHelper
 2011              	.LVL225:
 374:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_FillCircleHelper(x+r    , y+r, r, 2, h-2*r-1, color);
 2012              		.loc 1 374 0
 2013 0046 2246     		mov	r2, r4
 2014 0048 3946     		mov	r1, r7
 2015 004a 4846     		mov	r0, r9
 2016 004c 0223     		movs	r3, #2
 2017 004e CDF83480 		str	r8, [sp, #52]
 2018 0052 0C95     		str	r5, [sp, #48]
 375:uc_libc_dev/graphic/gfx/gfx.c **** }
 2019              		.loc 1 375 0
 2020 0054 03B0     		add	sp, sp, #12
 2021              	.LCFI33:
 2022              		.cfi_def_cfa_offset 36
 2023              		@ sp needed
 2024 0056 BDE8F04F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 2025              	.LCFI34:
 2026              		.cfi_restore 14
 2027              		.cfi_restore 11
 2028              		.cfi_restore 10
 2029              		.cfi_restore 9
 2030              		.cfi_restore 8
 2031              		.cfi_restore 7
 2032              		.cfi_restore 6
 2033              		.cfi_restore 5
 2034              		.cfi_restore 4
 2035              		.cfi_def_cfa_offset 0
 2036              	.LVL226:
 374:uc_libc_dev/graphic/gfx/gfx.c ****   	gfx_FillCircleHelper(x+r    , y+r, r, 2, h-2*r-1, color);
 2037              		.loc 1 374 0
 2038 005a FFF7FEBF 		b	gfx_FillCircleHelper
 2039              	.LVL227:
 2040              		.cfi_endproc
 2041              	.LFE16:
 2043              		.section	.text.gfx_SetCursor,"ax",%progbits
 2044              		.align	1
 2045              		.global	gfx_SetCursor
 2046              		.thumb
 2047              		.thumb_func
 2049              	gfx_SetCursor:
 2050              	.LFB17:
 376:uc_libc_dev/graphic/gfx/gfx.c **** 
 377:uc_libc_dev/graphic/gfx/gfx.c **** 
 378:uc_libc_dev/graphic/gfx/gfx.c **** // Draw a 1-bit image (bitmap) at the specified (x,y) position from the
 379:uc_libc_dev/graphic/gfx/gfx.c **** // provided bitmap buffer (must be PROGMEM memory) using the specified
 380:uc_libc_dev/graphic/gfx/gfx.c **** // foreground color (unset bits are transparent).
 381:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX::drawBitmap(int x, int y,
 382:uc_libc_dev/graphic/gfx/gfx.c **** // const u8 *bitmap, int w, int h, uint color) {
 383:uc_libc_dev/graphic/gfx/gfx.c **** //
 384:uc_libc_dev/graphic/gfx/gfx.c **** //  int i, j, byteWidth = (w + 7) / 8;
 385:uc_libc_dev/graphic/gfx/gfx.c **** //  u8 byte;
 386:uc_libc_dev/graphic/gfx/gfx.c **** //
 387:uc_libc_dev/graphic/gfx/gfx.c **** //  for(j=0; j<h; j++) {
 388:uc_libc_dev/graphic/gfx/gfx.c **** //    for(i=0; i<w; i++) {
 389:uc_libc_dev/graphic/gfx/gfx.c **** //      if(i & 7) byte <<= 1;
 390:uc_libc_dev/graphic/gfx/gfx.c **** //      else      byte   = (bitmap + j * byteWidth + i / 8);
 391:uc_libc_dev/graphic/gfx/gfx.c **** //      if(byte & 0x80) gfx_DrawPixel(x+i, y+j, color);
 392:uc_libc_dev/graphic/gfx/gfx.c **** //    }
 393:uc_libc_dev/graphic/gfx/gfx.c **** //  }
 394:uc_libc_dev/graphic/gfx/gfx.c **** //}
 395:uc_libc_dev/graphic/gfx/gfx.c **** 
 396:uc_libc_dev/graphic/gfx/gfx.c **** // Draw a 1-bit image (bitmap) at the specified (x,y) position from the
 397:uc_libc_dev/graphic/gfx/gfx.c **** // provided bitmap buffer (must be PROGMEM memory) using the specified
 398:uc_libc_dev/graphic/gfx/gfx.c **** // foreground (for set bits) and background (for clear bits) colors.
 399:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX::drawBitmap(int x, int y,
 400:uc_libc_dev/graphic/gfx/gfx.c **** // const u8 *bitmap, int w, int h, uint color, uint bg) {
 401:uc_libc_dev/graphic/gfx/gfx.c **** //
 402:uc_libc_dev/graphic/gfx/gfx.c **** //  int i, j, byteWidth = (w + 7) / 8;
 403:uc_libc_dev/graphic/gfx/gfx.c **** //  u8 byte;
 404:uc_libc_dev/graphic/gfx/gfx.c **** //
 405:uc_libc_dev/graphic/gfx/gfx.c **** //  for(j=0; j<h; j++) {
 406:uc_libc_dev/graphic/gfx/gfx.c **** //    for(i=0; i<w; i++ ) {
 407:uc_libc_dev/graphic/gfx/gfx.c **** //      if(i & 7) byte <<= 1;
 408:uc_libc_dev/graphic/gfx/gfx.c **** //      else      byte   = (bitmap + j * byteWidth + i / 8);
 409:uc_libc_dev/graphic/gfx/gfx.c **** //      if(byte & 0x80) gfx_DrawPixel(x+i, y+j, color);
 410:uc_libc_dev/graphic/gfx/gfx.c **** //      else            gfx_DrawPixel(x+i, y+j, bg);
 411:uc_libc_dev/graphic/gfx/gfx.c **** //    }
 412:uc_libc_dev/graphic/gfx/gfx.c **** //  }
 413:uc_libc_dev/graphic/gfx/gfx.c **** //}
 414:uc_libc_dev/graphic/gfx/gfx.c **** 
 415:uc_libc_dev/graphic/gfx/gfx.c **** //// drawBitmap() variant for RAM-resident (not PROGMEM) bitmaps.
 416:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX::drawBitmap(int x, int y,
 417:uc_libc_dev/graphic/gfx/gfx.c **** // u8 *bitmap, int w, int h, uint color) {
 418:uc_libc_dev/graphic/gfx/gfx.c **** //
 419:uc_libc_dev/graphic/gfx/gfx.c **** //  int i, j, byteWidth = (w + 7) / 8;
 420:uc_libc_dev/graphic/gfx/gfx.c **** //  u8 byte;
 421:uc_libc_dev/graphic/gfx/gfx.c **** //
 422:uc_libc_dev/graphic/gfx/gfx.c **** //  for(j=0; j<h; j++) {
 423:uc_libc_dev/graphic/gfx/gfx.c **** //    for(i=0; i<w; i++ ) {
 424:uc_libc_dev/graphic/gfx/gfx.c **** //      if(i & 7) byte <<= 1;
 425:uc_libc_dev/graphic/gfx/gfx.c **** //      else      byte   = bitmap[j * byteWidth + i / 8];
 426:uc_libc_dev/graphic/gfx/gfx.c **** //      if(byte & 0x80) gfx_DrawPixel(x+i, y+j, color);
 427:uc_libc_dev/graphic/gfx/gfx.c **** //    }
 428:uc_libc_dev/graphic/gfx/gfx.c **** //  }
 429:uc_libc_dev/graphic/gfx/gfx.c **** //}
 430:uc_libc_dev/graphic/gfx/gfx.c **** //
 431:uc_libc_dev/graphic/gfx/gfx.c **** //// drawBitmap() variant w/background for RAM-resident (not PROGMEM) bitmaps.
 432:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX::drawBitmap(int x, int y,
 433:uc_libc_dev/graphic/gfx/gfx.c **** // u8 *bitmap, int w, int h, uint color, uint bg) {
 434:uc_libc_dev/graphic/gfx/gfx.c **** //
 435:uc_libc_dev/graphic/gfx/gfx.c **** //  int i, j, byteWidth = (w + 7) / 8;
 436:uc_libc_dev/graphic/gfx/gfx.c **** //  u8 byte;
 437:uc_libc_dev/graphic/gfx/gfx.c **** //
 438:uc_libc_dev/graphic/gfx/gfx.c **** //  for(j=0; j<h; j++) {
 439:uc_libc_dev/graphic/gfx/gfx.c **** //    for(i=0; i<w; i++ ) {
 440:uc_libc_dev/graphic/gfx/gfx.c **** //      if(i & 7) byte <<= 1;
 441:uc_libc_dev/graphic/gfx/gfx.c **** //      else      byte   = bitmap[j * byteWidth + i / 8];
 442:uc_libc_dev/graphic/gfx/gfx.c **** //      if(byte & 0x80) gfx_DrawPixel(x+i, y+j, color);
 443:uc_libc_dev/graphic/gfx/gfx.c **** //      else            gfx_DrawPixel(x+i, y+j, bg);
 444:uc_libc_dev/graphic/gfx/gfx.c **** //    }
 445:uc_libc_dev/graphic/gfx/gfx.c **** //  }
 446:uc_libc_dev/graphic/gfx/gfx.c **** //}
 447:uc_libc_dev/graphic/gfx/gfx.c **** //
 448:uc_libc_dev/graphic/gfx/gfx.c **** ////Draw XBitMap Files (*.xbm), exported from GIMP,
 449:uc_libc_dev/graphic/gfx/gfx.c **** ////Usage: Export from GIMP to *.xbm, rename *.xbm to *.c and open in editor.
 450:uc_libc_dev/graphic/gfx/gfx.c **** ////C Array can be directly used with this function
 451:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX::drawXBitmap(int x, int y,
 452:uc_libc_dev/graphic/gfx/gfx.c **** // const u8 *bitmap, int w, int h, uint color) {
 453:uc_libc_dev/graphic/gfx/gfx.c **** //
 454:uc_libc_dev/graphic/gfx/gfx.c **** //  int i, j, byteWidth = (w + 7) / 8;
 455:uc_libc_dev/graphic/gfx/gfx.c **** //  u8 byte;
 456:uc_libc_dev/graphic/gfx/gfx.c **** //
 457:uc_libc_dev/graphic/gfx/gfx.c **** //  for(j=0; j<h; j++) {
 458:uc_libc_dev/graphic/gfx/gfx.c **** //    for(i=0; i<w; i++ ) {
 459:uc_libc_dev/graphic/gfx/gfx.c **** //      if(i & 7) byte >>= 1;
 460:uc_libc_dev/graphic/gfx/gfx.c **** //      else      byte   = (bitmap + j * byteWidth + i / 8);
 461:uc_libc_dev/graphic/gfx/gfx.c **** //      if(byte & 0x01) gfx_DrawPixel(x+i, y+j, color);
 462:uc_libc_dev/graphic/gfx/gfx.c **** //    }
 463:uc_libc_dev/graphic/gfx/gfx.c **** //  }
 464:uc_libc_dev/graphic/gfx/gfx.c **** //}
 465:uc_libc_dev/graphic/gfx/gfx.c **** 
 466:uc_libc_dev/graphic/gfx/gfx.c **** /***************************************************************************/
 467:uc_libc_dev/graphic/gfx/gfx.c **** // code for the GFX button UI element
 468:uc_libc_dev/graphic/gfx/gfx.c **** 
 469:uc_libc_dev/graphic/gfx/gfx.c **** //Adafruit_GFX_Button::Adafruit_GFX_Button(void) {
 470:uc_libc_dev/graphic/gfx/gfx.c **** //  _gfx = 0;
 471:uc_libc_dev/graphic/gfx/gfx.c **** //}
 472:uc_libc_dev/graphic/gfx/gfx.c **** //
 473:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX_Button::initButton(
 474:uc_libc_dev/graphic/gfx/gfx.c **** // Adafruit_GFX *gfx, int x, int y, u8 w, u8 h,
 475:uc_libc_dev/graphic/gfx/gfx.c **** // uint outline, uint fill, uint textcolor,
 476:uc_libc_dev/graphic/gfx/gfx.c **** // char *label, u8 textsize)
 477:uc_libc_dev/graphic/gfx/gfx.c **** //{
 478:uc_libc_dev/graphic/gfx/gfx.c **** //  _x            = x;
 479:uc_libc_dev/graphic/gfx/gfx.c **** //  _y            = y;
 480:uc_libc_dev/graphic/gfx/gfx.c **** //  _w            = w;
 481:uc_libc_dev/graphic/gfx/gfx.c **** //  _h            = h;
 482:uc_libc_dev/graphic/gfx/gfx.c **** //  _outlinecolor = outline;
 483:uc_libc_dev/graphic/gfx/gfx.c **** //  _fillcolor    = fill;
 484:uc_libc_dev/graphic/gfx/gfx.c **** //  _textcolor    = textcolor;
 485:uc_libc_dev/graphic/gfx/gfx.c **** //  _textsize     = textsize;
 486:uc_libc_dev/graphic/gfx/gfx.c **** //  _gfx          = gfx;
 487:uc_libc_dev/graphic/gfx/gfx.c **** //  strncpy(_label, label, 9);
 488:uc_libc_dev/graphic/gfx/gfx.c **** //  _label[9] = 0;
 489:uc_libc_dev/graphic/gfx/gfx.c **** //}
 490:uc_libc_dev/graphic/gfx/gfx.c **** //
 491:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX_Button::drawButton(boolean inverted) {
 492:uc_libc_dev/graphic/gfx/gfx.c **** //  uint fill, outline, text;
 493:uc_libc_dev/graphic/gfx/gfx.c **** //
 494:uc_libc_dev/graphic/gfx/gfx.c **** //  if(!inverted) {
 495:uc_libc_dev/graphic/gfx/gfx.c **** //    fill    = _fillcolor;
 496:uc_libc_dev/graphic/gfx/gfx.c **** //    outline = _outlinecolor;
 497:uc_libc_dev/graphic/gfx/gfx.c **** //    text    = _textcolor;
 498:uc_libc_dev/graphic/gfx/gfx.c **** //  } else {
 499:uc_libc_dev/graphic/gfx/gfx.c **** //    fill    = _textcolor;
 500:uc_libc_dev/graphic/gfx/gfx.c **** //    outline = _outlinecolor;
 501:uc_libc_dev/graphic/gfx/gfx.c **** //    text    = _fillcolor;
 502:uc_libc_dev/graphic/gfx/gfx.c **** //  }
 503:uc_libc_dev/graphic/gfx/gfx.c **** //
 504:uc_libc_dev/graphic/gfx/gfx.c **** //  _gfx->fillRoundRect(_x - (_w/2), _y - (_h/2), _w, _h, min(_w,_h)/4, fill);
 505:uc_libc_dev/graphic/gfx/gfx.c **** //  _gfx->drawRoundRect(_x - (_w/2), _y - (_h/2), _w, _h, min(_w,_h)/4, outline);
 506:uc_libc_dev/graphic/gfx/gfx.c **** //
 507:uc_libc_dev/graphic/gfx/gfx.c **** //  _gfx->setCursor(_x - strlen(_label)*3*_textsize, _y-4*_textsize);
 508:uc_libc_dev/graphic/gfx/gfx.c **** //  _gfx->setTextColor(text);
 509:uc_libc_dev/graphic/gfx/gfx.c **** //  _gfx->setTextSize(_textsize);
 510:uc_libc_dev/graphic/gfx/gfx.c **** //  _gfx->print(_label);
 511:uc_libc_dev/graphic/gfx/gfx.c **** //}
 512:uc_libc_dev/graphic/gfx/gfx.c **** //
 513:uc_libc_dev/graphic/gfx/gfx.c **** //boolean Adafruit_GFX_Button::contains(int x, int y) {
 514:uc_libc_dev/graphic/gfx/gfx.c **** //  if ((x < (_x - _w/2)) || (x > (_x + _w/2))) return false;
 515:uc_libc_dev/graphic/gfx/gfx.c **** //  if ((y < (_y - _h/2)) || (y > (_y + _h/2))) return false;
 516:uc_libc_dev/graphic/gfx/gfx.c **** //  return true;
 517:uc_libc_dev/graphic/gfx/gfx.c **** //}
 518:uc_libc_dev/graphic/gfx/gfx.c **** //
 519:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX_Button::press(boolean p) {
 520:uc_libc_dev/graphic/gfx/gfx.c **** //  laststate = currstate;
 521:uc_libc_dev/graphic/gfx/gfx.c **** //  currstate = p;
 522:uc_libc_dev/graphic/gfx/gfx.c **** //}
 523:uc_libc_dev/graphic/gfx/gfx.c **** //
 524:uc_libc_dev/graphic/gfx/gfx.c **** //boolean Adafruit_GFX_Button::isPressed() { return currstate; }
 525:uc_libc_dev/graphic/gfx/gfx.c **** //boolean Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); }
 526:uc_libc_dev/graphic/gfx/gfx.c **** //boolean Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); }
 527:uc_libc_dev/graphic/gfx/gfx.c **** 
 528:uc_libc_dev/graphic/gfx/gfx.c **** 
 529:uc_libc_dev/graphic/gfx/gfx.c **** 
 530:uc_libc_dev/graphic/gfx/gfx.c **** 
 531:uc_libc_dev/graphic/gfx/gfx.c **** 
 532:uc_libc_dev/graphic/gfx/gfx.c **** //#################################################################################################
 533:uc_libc_dev/graphic/gfx/gfx.c **** // FONTS
 534:uc_libc_dev/graphic/gfx/gfx.c **** //#################################################################################################
 535:uc_libc_dev/graphic/gfx/gfx.c **** //#include ""
 536:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_SetCursor(int x, int y) {
 2051              		.loc 1 536 0
 2052              		.cfi_startproc
 2053              		@ args = 0, pretend = 0, frame = 0
 2054              		@ frame_needed = 0, uses_anonymous_args = 0
 2055              		@ link register save eliminated.
 2056              	.LVL228:
 537:uc_libc_dev/graphic/gfx/gfx.c ****   	cursor_x = x;
 2057              		.loc 1 537 0
 2058 0000 024B     		ldr	r3, .L110
 2059 0002 1860     		str	r0, [r3]
 538:uc_libc_dev/graphic/gfx/gfx.c ****   	cursor_y = y;
 2060              		.loc 1 538 0
 2061 0004 024B     		ldr	r3, .L110+4
 2062 0006 1960     		str	r1, [r3]
 2063 0008 7047     		bx	lr
 2064              	.L111:
 2065 000a 00BF     		.align	2
 2066              	.L110:
 2067 000c 00000000 		.word	.LANCHOR4
 2068 0010 00000000 		.word	.LANCHOR3
 2069              		.cfi_endproc
 2070              	.LFE17:
 2072              		.section	.text.gfx_GetCursorX,"ax",%progbits
 2073              		.align	1
 2074              		.global	gfx_GetCursorX
 2075              		.thumb
 2076              		.thumb_func
 2078              	gfx_GetCursorX:
 2079              	.LFB18:
 539:uc_libc_dev/graphic/gfx/gfx.c **** }
 540:uc_libc_dev/graphic/gfx/gfx.c **** 
 541:uc_libc_dev/graphic/gfx/gfx.c **** int gfx_GetCursorX(void) {
 2080              		.loc 1 541 0
 2081              		.cfi_startproc
 2082              		@ args = 0, pretend = 0, frame = 0
 2083              		@ frame_needed = 0, uses_anonymous_args = 0
 2084              		@ link register save eliminated.
 542:uc_libc_dev/graphic/gfx/gfx.c ****   	return cursor_x;
 543:uc_libc_dev/graphic/gfx/gfx.c **** }
 2085              		.loc 1 543 0
 2086 0000 014B     		ldr	r3, .L113
 2087 0002 1868     		ldr	r0, [r3]
 2088 0004 7047     		bx	lr
 2089              	.L114:
 2090 0006 00BF     		.align	2
 2091              	.L113:
 2092 0008 00000000 		.word	.LANCHOR4
 2093              		.cfi_endproc
 2094              	.LFE18:
 2096              		.section	.text.gfx_GetCursorY,"ax",%progbits
 2097              		.align	1
 2098              		.global	gfx_GetCursorY
 2099              		.thumb
 2100              		.thumb_func
 2102              	gfx_GetCursorY:
 2103              	.LFB19:
 544:uc_libc_dev/graphic/gfx/gfx.c **** 
 545:uc_libc_dev/graphic/gfx/gfx.c **** int gfx_GetCursorY(void) {
 2104              		.loc 1 545 0
 2105              		.cfi_startproc
 2106              		@ args = 0, pretend = 0, frame = 0
 2107              		@ frame_needed = 0, uses_anonymous_args = 0
 2108              		@ link register save eliminated.
 546:uc_libc_dev/graphic/gfx/gfx.c ****   	return cursor_y;
 547:uc_libc_dev/graphic/gfx/gfx.c **** }
 2109              		.loc 1 547 0
 2110 0000 014B     		ldr	r3, .L116
 2111 0002 1868     		ldr	r0, [r3]
 2112 0004 7047     		bx	lr
 2113              	.L117:
 2114 0006 00BF     		.align	2
 2115              	.L116:
 2116 0008 00000000 		.word	.LANCHOR3
 2117              		.cfi_endproc
 2118              	.LFE19:
 2120              		.section	.text.gfx_SetTextSize,"ax",%progbits
 2121              		.align	1
 2122              		.global	gfx_SetTextSize
 2123              		.thumb
 2124              		.thumb_func
 2126              	gfx_SetTextSize:
 2127              	.LFB20:
 548:uc_libc_dev/graphic/gfx/gfx.c **** 
 549:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_SetTextSize(int s) {
 2128              		.loc 1 549 0
 2129              		.cfi_startproc
 2130              		@ args = 0, pretend = 0, frame = 0
 2131              		@ frame_needed = 0, uses_anonymous_args = 0
 2132              		@ link register save eliminated.
 2133              	.LVL229:
 550:uc_libc_dev/graphic/gfx/gfx.c ****   	textsize = (s > 0) ? s : 1;
 2134              		.loc 1 550 0
 2135 0000 0128     		cmp	r0, #1
 2136 0002 024B     		ldr	r3, .L119
 2137 0004 B8BF     		it	lt
 2138 0006 0120     		movlt	r0, #1
 2139              	.LVL230:
 2140 0008 1860     		str	r0, [r3]
 2141 000a 7047     		bx	lr
 2142              	.L120:
 2143              		.align	2
 2144              	.L119:
 2145 000c 00000000 		.word	.LANCHOR5
 2146              		.cfi_endproc
 2147              	.LFE20:
 2149              		.section	.text.gfx_SetTextColor,"ax",%progbits
 2150              		.align	1
 2151              		.global	gfx_SetTextColor
 2152              		.thumb
 2153              		.thumb_func
 2155              	gfx_SetTextColor:
 2156              	.LFB21:
 551:uc_libc_dev/graphic/gfx/gfx.c **** }
 552:uc_libc_dev/graphic/gfx/gfx.c **** 
 553:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX::setTextColor(uint c) {
 554:uc_libc_dev/graphic/gfx/gfx.c **** //  // For 'transparent' background, we'll set the bg
 555:uc_libc_dev/graphic/gfx/gfx.c **** //  // to the same as fg instead of using a flag
 556:uc_libc_dev/graphic/gfx/gfx.c **** //  textcolor = textbgcolor = c;
 557:uc_libc_dev/graphic/gfx/gfx.c **** //}
 558:uc_libc_dev/graphic/gfx/gfx.c **** 
 559:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_SetTextColor(uint c) {
 2157              		.loc 1 559 0
 2158              		.cfi_startproc
 2159              		@ args = 0, pretend = 0, frame = 0
 2160              		@ frame_needed = 0, uses_anonymous_args = 0
 2161              		@ link register save eliminated.
 2162              	.LVL231:
 560:uc_libc_dev/graphic/gfx/gfx.c ****   	textcolor   = c;
 2163              		.loc 1 560 0
 2164 0000 014B     		ldr	r3, .L122
 2165 0002 1860     		str	r0, [r3]
 2166 0004 7047     		bx	lr
 2167              	.L123:
 2168 0006 00BF     		.align	2
 2169              	.L122:
 2170 0008 00000000 		.word	.LANCHOR6
 2171              		.cfi_endproc
 2172              	.LFE21:
 2174              		.section	.text.gfx_SetTextWrap,"ax",%progbits
 2175              		.align	1
 2176              		.global	gfx_SetTextWrap
 2177              		.thumb
 2178              		.thumb_func
 2180              	gfx_SetTextWrap:
 2181              	.LFB22:
 561:uc_libc_dev/graphic/gfx/gfx.c **** }
 562:uc_libc_dev/graphic/gfx/gfx.c **** 
 563:uc_libc_dev/graphic/gfx/gfx.c **** //void gfx_SetTextBgColor(uint c) {
 564:uc_libc_dev/graphic/gfx/gfx.c **** //  	textbgcolor = c;
 565:uc_libc_dev/graphic/gfx/gfx.c **** //}
 566:uc_libc_dev/graphic/gfx/gfx.c **** 
 567:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_SetTextWrap(int w) {
 2182              		.loc 1 567 0
 2183              		.cfi_startproc
 2184              		@ args = 0, pretend = 0, frame = 0
 2185              		@ frame_needed = 0, uses_anonymous_args = 0
 2186              		@ link register save eliminated.
 2187              	.LVL232:
 568:uc_libc_dev/graphic/gfx/gfx.c ****   	wrap = w;
 2188              		.loc 1 568 0
 2189 0000 014B     		ldr	r3, .L125
 2190 0002 1860     		str	r0, [r3]
 2191 0004 7047     		bx	lr
 2192              	.L126:
 2193 0006 00BF     		.align	2
 2194              	.L125:
 2195 0008 00000000 		.word	.LANCHOR7
 2196              		.cfi_endproc
 2197              	.LFE22:
 2199              		.section	.text.gfx_cp437,"ax",%progbits
 2200              		.align	1
 2201              		.global	gfx_cp437
 2202              		.thumb
 2203              		.thumb_func
 2205              	gfx_cp437:
 2206              	.LFB23:
 569:uc_libc_dev/graphic/gfx/gfx.c **** }
 570:uc_libc_dev/graphic/gfx/gfx.c **** 
 571:uc_libc_dev/graphic/gfx/gfx.c **** // Enable (or disable) Code Page 437-compatible charset.
 572:uc_libc_dev/graphic/gfx/gfx.c **** // There was an error in glcdfont.c for the longest time -- one character
 573:uc_libc_dev/graphic/gfx/gfx.c **** // (#176, the 'light shade' block) was missing -- this threw off the index
 574:uc_libc_dev/graphic/gfx/gfx.c **** // of every character that followed it.  But a TON of code has been written
 575:uc_libc_dev/graphic/gfx/gfx.c **** // with the erroneous character indices.  By default, the library uses the
 576:uc_libc_dev/graphic/gfx/gfx.c **** // original 'wrong' behavior and old sketches will still work.  Pass 'true'
 577:uc_libc_dev/graphic/gfx/gfx.c **** // to this function to use correct CP437 character values in your code.
 578:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_cp437(int x) {
 2207              		.loc 1 578 0
 2208              		.cfi_startproc
 2209              		@ args = 0, pretend = 0, frame = 0
 2210              		@ frame_needed = 0, uses_anonymous_args = 0
 2211              		@ link register save eliminated.
 2212              	.LVL233:
 2213 0000 7047     		bx	lr
 2214              		.cfi_endproc
 2215              	.LFE23:
 2217              		.section	.text.gfx_DrawChar,"ax",%progbits
 2218              		.align	1
 2219              		.global	gfx_DrawChar
 2220              		.thumb
 2221              		.thumb_func
 2223              	gfx_DrawChar:
 2224              	.LFB25:
 579:uc_libc_dev/graphic/gfx/gfx.c ****   	_cp437 = x;
 580:uc_libc_dev/graphic/gfx/gfx.c **** }
 581:uc_libc_dev/graphic/gfx/gfx.c **** 
 582:uc_libc_dev/graphic/gfx/gfx.c **** int gfx_PutChar(n16 ch) {
 583:uc_libc_dev/graphic/gfx/gfx.c ****    	if(ch == '\n') {
 584:uc_libc_dev/graphic/gfx/gfx.c ****    		cursor_x  = 0;
 585:uc_libc_dev/graphic/gfx/gfx.c ****    		cursor_y += (int)textsize * (u8)(gfxFont->yAdvance);
 586:uc_libc_dev/graphic/gfx/gfx.c ****    	} else if(ch != '\r') {
 587:uc_libc_dev/graphic/gfx/gfx.c ****    		u8 first = gfxFont->first;
 588:uc_libc_dev/graphic/gfx/gfx.c ****    		if((ch >= first) && (ch <= (u8)(gfxFont->last))) {
 589:uc_libc_dev/graphic/gfx/gfx.c ****       		u8 c2 = ch - gfxFont->first;
 590:uc_libc_dev/graphic/gfx/gfx.c ****         	//tGFXglyph* glyph = &gfxFont->glyph[c2];
 591:uc_libc_dev/graphic/gfx/gfx.c ****         	const tGFXglyph* glyph = &gfxFont->glyph[c2];
 592:uc_libc_dev/graphic/gfx/gfx.c ****         	u8 w = glyph->width, h = glyph->height;
 593:uc_libc_dev/graphic/gfx/gfx.c **** 
 594:uc_libc_dev/graphic/gfx/gfx.c ****         	if((w > 0) && (h > 0)) { // Is there an associated bitmap?
 595:uc_libc_dev/graphic/gfx/gfx.c ****           		int xo = glyph->xOffset; // sic
 596:uc_libc_dev/graphic/gfx/gfx.c ****           		if(wrap && ((cursor_x + textsize * (xo + w)) >= _width)) {
 597:uc_libc_dev/graphic/gfx/gfx.c ****             		// Drawing character would go off right edge; wrap to new line
 598:uc_libc_dev/graphic/gfx/gfx.c ****             		cursor_x  = 0;
 599:uc_libc_dev/graphic/gfx/gfx.c ****             		cursor_y += (int)textsize * (u8)(gfxFont->yAdvance);
 600:uc_libc_dev/graphic/gfx/gfx.c ****           		}
 601:uc_libc_dev/graphic/gfx/gfx.c ****           		gfx_DrawChar(cursor_x, cursor_y, ch, textcolor, textsize);
 602:uc_libc_dev/graphic/gfx/gfx.c ****         	}
 603:uc_libc_dev/graphic/gfx/gfx.c ****         	cursor_x += (glyph->xAdvance) * (int)textsize;
 604:uc_libc_dev/graphic/gfx/gfx.c ****       	}
 605:uc_libc_dev/graphic/gfx/gfx.c ****    	}
 606:uc_libc_dev/graphic/gfx/gfx.c ****   	return pdPASS;
 607:uc_libc_dev/graphic/gfx/gfx.c **** }
 608:uc_libc_dev/graphic/gfx/gfx.c **** 
 609:uc_libc_dev/graphic/gfx/gfx.c **** // Draw a character
 610:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_DrawChar(int x, int y, unsigned char c, uint color, uint size) {
 2225              		.loc 1 610 0
 2226              		.cfi_startproc
 2227              		@ args = 4, pretend = 0, frame = 48
 2228              		@ frame_needed = 0, uses_anonymous_args = 0
 2229              	.LVL234:
 2230              		.loc 1 610 0
 2231 0000 2DE9F04F 		push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 2232              	.LCFI35:
 2233              		.cfi_def_cfa_offset 36
 2234              		.cfi_offset 4, -36
 2235              		.cfi_offset 5, -32
 2236              		.cfi_offset 6, -28
 2237              		.cfi_offset 7, -24
 2238              		.cfi_offset 8, -20
 2239              		.cfi_offset 9, -16
 2240              		.cfi_offset 10, -12
 2241              		.cfi_offset 11, -8
 2242              		.cfi_offset 14, -4
 2243 0004 8FB0     		sub	sp, sp, #60
 2244              	.LCFI36:
 2245              		.cfi_def_cfa_offset 96
 2246              		.loc 1 610 0
 2247 0006 0793     		str	r3, [sp, #28]
 611:uc_libc_dev/graphic/gfx/gfx.c ****   	if(!gfxFont) return;
 2248              		.loc 1 611 0
 2249 0008 3A4B     		ldr	r3, .L140
 2250              	.LVL235:
 610:uc_libc_dev/graphic/gfx/gfx.c ****   	if(!gfxFont) return;
 2251              		.loc 1 610 0
 2252 000a 0691     		str	r1, [sp, #24]
 2253              		.loc 1 611 0
 2254 000c 1968     		ldr	r1, [r3]
 2255              	.LVL236:
 610:uc_libc_dev/graphic/gfx/gfx.c ****   	if(!gfxFont) return;
 2256              		.loc 1 610 0
 2257 000e 0590     		str	r0, [sp, #20]
 2258 0010 189D     		ldr	r5, [sp, #96]
 2259              		.loc 1 611 0
 2260 0012 0029     		cmp	r1, #0
 2261 0014 6AD0     		beq	.L128
 2262              	.LVL237:
 612:uc_libc_dev/graphic/gfx/gfx.c **** 
 613:uc_libc_dev/graphic/gfx/gfx.c ****     // Character is assumed previously filtered by write() to eliminate
 614:uc_libc_dev/graphic/gfx/gfx.c ****     // newlines, returns, non-printable characters, etc.  Calling drawChar()
 615:uc_libc_dev/graphic/gfx/gfx.c ****     // directly with 'bad' characters of font may cause mayhem!
 616:uc_libc_dev/graphic/gfx/gfx.c **** 
 617:uc_libc_dev/graphic/gfx/gfx.c ****     c -= gfxFont->first;
 618:uc_libc_dev/graphic/gfx/gfx.c **** 	const tGFXglyph* glyph = &gfxFont->glyph[c];
 2263              		.loc 1 618 0
 2264 0016 8B68     		ldr	r3, [r1, #8]
 2265 0018 4868     		ldr	r0, [r1, #4]
 2266              	.LVL238:
 2267 001a D21A     		subs	r2, r2, r3
 2268              	.LVL239:
 2269 001c D2B2     		uxtb	r2, r2
 2270 001e 1823     		movs	r3, #24
 2271 0020 5A43     		muls	r2, r3, r2
 2272 0022 8318     		adds	r3, r0, r2
 2273              	.LVL240:
 619:uc_libc_dev/graphic/gfx/gfx.c ****     const u8* bitmap = gfxFont->bitmap;
 620:uc_libc_dev/graphic/gfx/gfx.c ****     uint bo = glyph->bitmapOffset;
 2274              		.loc 1 620 0
 2275 0024 50F802B0 		ldr	fp, [r0, r2]
 621:uc_libc_dev/graphic/gfx/gfx.c ****     u8  w  = glyph->width,
 2276              		.loc 1 621 0
 2277 0028 1A79     		ldrb	r2, [r3, #4]	@ zero_extendqisi2
 622:uc_libc_dev/graphic/gfx/gfx.c ****         h  = glyph->height;
 623:uc_libc_dev/graphic/gfx/gfx.c **** 
 624:uc_libc_dev/graphic/gfx/gfx.c ****     s8   xo = glyph->xOffset,
 625:uc_libc_dev/graphic/gfx/gfx.c ****          yo = glyph->yOffset;
 626:uc_libc_dev/graphic/gfx/gfx.c ****     u8  xx, yy, bits=0, bit = 0;
 627:uc_libc_dev/graphic/gfx/gfx.c ****     int  xo16=0, yo16=0;
 628:uc_libc_dev/graphic/gfx/gfx.c **** 
 629:uc_libc_dev/graphic/gfx/gfx.c ****     if(size > 1) {
 2278              		.loc 1 629 0
 2279 002a 012D     		cmp	r5, #1
 621:uc_libc_dev/graphic/gfx/gfx.c ****     u8  w  = glyph->width,
 2280              		.loc 1 621 0
 2281 002c 0292     		str	r2, [sp, #8]
 622:uc_libc_dev/graphic/gfx/gfx.c ****         h  = glyph->height;
 2282              		.loc 1 622 0
 2283 002e 1A7A     		ldrb	r2, [r3, #8]	@ zero_extendqisi2
 627:uc_libc_dev/graphic/gfx/gfx.c **** 
 2284              		.loc 1 627 0
 2285 0030 98BF     		it	ls
 2286 0032 4FF0000A 		movls	r10, #0
 622:uc_libc_dev/graphic/gfx/gfx.c ****         h  = glyph->height;
 2287              		.loc 1 622 0
 2288 0036 0992     		str	r2, [sp, #36]
 624:uc_libc_dev/graphic/gfx/gfx.c ****          yo = glyph->yOffset;
 2289              		.loc 1 624 0
 2290 0038 93F91020 		ldrsb	r2, [r3, #16]
 625:uc_libc_dev/graphic/gfx/gfx.c ****     u8  xx, yy, bits=0, bit = 0;
 2291              		.loc 1 625 0
 2292 003c 93F91430 		ldrsb	r3, [r3, #20]
 2293              	.LVL241:
 630:uc_libc_dev/graphic/gfx/gfx.c ****       	xo16 = xo;
 2294              		.loc 1 630 0
 2295 0040 86BF     		itte	hi
 2296 0042 9046     		movhi	r8, r2
 631:uc_libc_dev/graphic/gfx/gfx.c ****       	yo16 = yo;
 2297              		.loc 1 631 0
 2298 0044 9A46     		movhi	r10, r3
 627:uc_libc_dev/graphic/gfx/gfx.c **** 
 2299              		.loc 1 627 0
 2300 0046 D046     		movls	r8, r10
 2301 0048 D146     		mov	r9, r10
 624:uc_libc_dev/graphic/gfx/gfx.c ****          yo = glyph->yOffset;
 2302              		.loc 1 624 0
 2303 004a 0392     		str	r2, [sp, #12]
 2304 004c 5FFA88F2 		uxtb	r2, r8
 2305 0050 5442     		negs	r4, r2
 2306 0052 0492     		str	r2, [sp, #16]
 632:uc_libc_dev/graphic/gfx/gfx.c ****     }
 633:uc_libc_dev/graphic/gfx/gfx.c **** 
 634:uc_libc_dev/graphic/gfx/gfx.c ****     // Todo: Add character clipping here
 635:uc_libc_dev/graphic/gfx/gfx.c **** 
 636:uc_libc_dev/graphic/gfx/gfx.c ****     // NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS.
 637:uc_libc_dev/graphic/gfx/gfx.c ****     // THIS IS ON PURPOSE AND BY DESIGN.  The background color feature
 638:uc_libc_dev/graphic/gfx/gfx.c ****     // has typically been used with the 'classic' font to overwrite old
 639:uc_libc_dev/graphic/gfx/gfx.c ****     // screen contents with new data.  This ONLY works because the
 640:uc_libc_dev/graphic/gfx/gfx.c ****     // characters are a uniform size; it's not a sensible thing to do with
 641:uc_libc_dev/graphic/gfx/gfx.c ****     // proportionally-spaced fonts with glyphs of varying sizes (and that
 642:uc_libc_dev/graphic/gfx/gfx.c ****     // may overlap).  To replace previously-drawn text when using a custom
 643:uc_libc_dev/graphic/gfx/gfx.c ****     // font, use the getTextBounds() function to determine the smallest
 644:uc_libc_dev/graphic/gfx/gfx.c ****     // rectangle encompassing a string, erase the area with fillRect(),
 645:uc_libc_dev/graphic/gfx/gfx.c ****     // then draw new text.  This WILL infortunately 'blink' the text, but
 646:uc_libc_dev/graphic/gfx/gfx.c ****     // is unavoidable.  Drawing 'background' pixels will NOT fix this,
 647:uc_libc_dev/graphic/gfx/gfx.c ****     // only creates a new set of problems.  Have an idea to work around
 648:uc_libc_dev/graphic/gfx/gfx.c ****     // this (a canvas object type for MCUs that can afford the RAM and
 649:uc_libc_dev/graphic/gfx/gfx.c ****     // displays supporting setAddrWindow() and pushColors()), but haven't
 650:uc_libc_dev/graphic/gfx/gfx.c ****     // implemented this yet.
 651:uc_libc_dev/graphic/gfx/gfx.c **** 
 652:uc_libc_dev/graphic/gfx/gfx.c **** 	for(yy=0; yy<h; yy++) {
 653:uc_libc_dev/graphic/gfx/gfx.c ****       	for(xx=0; xx<w; xx++) {
 654:uc_libc_dev/graphic/gfx/gfx.c ****         	if(!(bit++ & 7)) {
 655:uc_libc_dev/graphic/gfx/gfx.c ****           		bits = bitmap[bo++];
 656:uc_libc_dev/graphic/gfx/gfx.c ****         	}
 657:uc_libc_dev/graphic/gfx/gfx.c ****         	if(bits & 0x80) {
 658:uc_libc_dev/graphic/gfx/gfx.c ****           		if(size == 1) {
 659:uc_libc_dev/graphic/gfx/gfx.c ****             		gfx_DrawPixel(x+xo+xx, y+yo+yy, color);
 2307              		.loc 1 659 0
 2308 0054 069A     		ldr	r2, [sp, #24]
 619:uc_libc_dev/graphic/gfx/gfx.c ****     uint bo = glyph->bitmapOffset;
 2309              		.loc 1 619 0
 2310 0056 0968     		ldr	r1, [r1]
 2311              	.LVL242:
 2312              		.loc 1 659 0
 2313 0058 1344     		add	r3, r3, r2
 2314 005a 0C93     		str	r3, [sp, #48]
 2315 005c BDF81C30 		ldrh	r3, [sp, #28]
 619:uc_libc_dev/graphic/gfx/gfx.c ****     uint bo = glyph->bitmapOffset;
 2316              		.loc 1 619 0
 2317 0060 0891     		str	r1, [sp, #32]
 2318              	.LVL243:
 2319 0062 E4B2     		uxtb	r4, r4
 626:uc_libc_dev/graphic/gfx/gfx.c ****     int  xo16=0, yo16=0;
 2320              		.loc 1 626 0
 2321 0064 0026     		movs	r6, #0
 2322              		.loc 1 659 0
 2323 0066 0D93     		str	r3, [sp, #52]
 2324              	.LVL244:
 2325              	.L131:
 2326 0068 CAEB0903 		rsb	r3, r10, r9
 652:uc_libc_dev/graphic/gfx/gfx.c ****       	for(xx=0; xx<w; xx++) {
 2327              		.loc 1 652 0 discriminator 1
 2328 006c 099A     		ldr	r2, [sp, #36]
 2329 006e DBB2     		uxtb	r3, r3
 2330              	.LVL245:
 2331 0070 9A42     		cmp	r2, r3
 2332 0072 3BD9     		bls	.L128
 2333 0074 4746     		mov	r7, r8
 660:uc_libc_dev/graphic/gfx/gfx.c ****           		} else {
 661:uc_libc_dev/graphic/gfx/gfx.c ****             		gfx_FillRect(x+(xo16+xx)*size, y+(yo16+yy)*size, size, size, color);
 2334              		.loc 1 661 0
 2335 0076 069A     		ldr	r2, [sp, #24]
 2336 0078 09FB0522 		mla	r2, r9, r5, r2
 2337 007c 0A92     		str	r2, [sp, #40]
 659:uc_libc_dev/graphic/gfx/gfx.c ****           		} else {
 2338              		.loc 1 659 0
 2339 007e 0C9A     		ldr	r2, [sp, #48]
 2340 0080 1344     		add	r3, r3, r2
 2341              	.LVL246:
 2342 0082 1BB2     		sxth	r3, r3
 2343 0084 0B93     		str	r3, [sp, #44]
 2344              	.L137:
 653:uc_libc_dev/graphic/gfx/gfx.c ****         	if(!(bit++ & 7)) {
 2345              		.loc 1 653 0 discriminator 1
 2346 0086 0499     		ldr	r1, [sp, #16]
 2347 0088 FBB2     		uxtb	r3, r7
 2348 008a E218     		adds	r2, r4, r3
 2349 008c 5B1A     		subs	r3, r3, r1
 2350 008e 0299     		ldr	r1, [sp, #8]
 2351 0090 DBB2     		uxtb	r3, r3
 2352 0092 9942     		cmp	r1, r3
 2353 0094 D2B2     		uxtb	r2, r2
 2354              	.LVL247:
 2355 0096 24D9     		bls	.L139
 2356              	.LVL248:
 654:uc_libc_dev/graphic/gfx/gfx.c ****           		bits = bitmap[bo++];
 2357              		.loc 1 654 0
 2358 0098 5207     		lsls	r2, r2, #29
 655:uc_libc_dev/graphic/gfx/gfx.c ****         	}
 2359              		.loc 1 655 0
 2360 009a 02BF     		ittt	eq
 2361 009c 089B     		ldreq	r3, [sp, #32]
 2362 009e 13F80B60 		ldrbeq	r6, [r3, fp]	@ zero_extendqisi2
 2363              	.LVL249:
 2364 00a2 0BF1010B 		addeq	fp, fp, #1
 2365              	.LVL250:
 657:uc_libc_dev/graphic/gfx/gfx.c ****           		if(size == 1) {
 2366              		.loc 1 657 0
 2367 00a6 3306     		lsls	r3, r6, #24
 2368 00a8 17D5     		bpl	.L133
 658:uc_libc_dev/graphic/gfx/gfx.c ****             		gfx_DrawPixel(x+xo+xx, y+yo+yy, color);
 2369              		.loc 1 658 0
 2370 00aa 012D     		cmp	r5, #1
 2371 00ac 0BD1     		bne	.L134
 659:uc_libc_dev/graphic/gfx/gfx.c ****           		} else {
 2372              		.loc 1 659 0
 2373 00ae 059A     		ldr	r2, [sp, #20]
 2374 00b0 039B     		ldr	r3, [sp, #12]
 2375 00b2 0B99     		ldr	r1, [sp, #44]
 2376 00b4 9818     		adds	r0, r3, r2
 2377 00b6 C8EB0000 		rsb	r0, r8, r0
 2378 00ba 3844     		add	r0, r0, r7
 2379 00bc 0D9A     		ldr	r2, [sp, #52]
 2380 00be 00B2     		sxth	r0, r0
 2381 00c0 FFF7FEFF 		bl	tft_DrawPixel
 2382              	.LVL251:
 2383 00c4 09E0     		b	.L133
 2384              	.L134:
 2385              		.loc 1 661 0
 2386 00c6 079B     		ldr	r3, [sp, #28]
 2387 00c8 0598     		ldr	r0, [sp, #20]
 2388 00ca 0093     		str	r3, [sp]
 2389 00cc 2A46     		mov	r2, r5
 2390 00ce 2B46     		mov	r3, r5
 2391 00d0 0A99     		ldr	r1, [sp, #40]
 2392 00d2 07FB0500 		mla	r0, r7, r5, r0
 2393 00d6 FFF7FEFF 		bl	gfx_FillRect
 2394              	.LVL252:
 2395              	.L133:
 662:uc_libc_dev/graphic/gfx/gfx.c ****           		}
 663:uc_libc_dev/graphic/gfx/gfx.c ****         	}
 664:uc_libc_dev/graphic/gfx/gfx.c ****         	bits <<= 1;
 2396              		.loc 1 664 0 discriminator 2
 2397 00da 7600     		lsls	r6, r6, #1
 2398              	.LVL253:
 2399 00dc F6B2     		uxtb	r6, r6
 2400              	.LVL254:
 2401 00de 0137     		adds	r7, r7, #1
 2402 00e0 D1E7     		b	.L137
 2403              	.LVL255:
 2404              	.L139:
 2405 00e2 0C44     		add	r4, r4, r1
 2406 00e4 E4B2     		uxtb	r4, r4
 2407 00e6 09F10109 		add	r9, r9, #1
 2408 00ea BDE7     		b	.L131
 2409              	.LVL256:
 2410              	.L128:
 665:uc_libc_dev/graphic/gfx/gfx.c ****       	}
 666:uc_libc_dev/graphic/gfx/gfx.c ****     }
 667:uc_libc_dev/graphic/gfx/gfx.c **** }
 2411              		.loc 1 667 0
 2412 00ec 0FB0     		add	sp, sp, #60
 2413              	.LCFI37:
 2414              		.cfi_def_cfa_offset 36
 2415              		@ sp needed
 2416 00ee BDE8F08F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
 2417              	.LVL257:
 2418              	.L141:
 2419 00f2 00BF     		.align	2
 2420              	.L140:
 2421 00f4 00000000 		.word	gfxFont
 2422              		.cfi_endproc
 2423              	.LFE25:
 2425              		.section	.text.gfx_PutChar,"ax",%progbits
 2426              		.align	1
 2427              		.global	gfx_PutChar
 2428              		.thumb
 2429              		.thumb_func
 2431              	gfx_PutChar:
 2432              	.LFB24:
 582:uc_libc_dev/graphic/gfx/gfx.c ****    	if(ch == '\n') {
 2433              		.loc 1 582 0
 2434              		.cfi_startproc
 2435              		@ args = 0, pretend = 0, frame = 0
 2436              		@ frame_needed = 0, uses_anonymous_args = 0
 2437              	.LVL258:
 583:uc_libc_dev/graphic/gfx/gfx.c ****    		cursor_x  = 0;
 2438              		.loc 1 583 0
 2439 0000 0A28     		cmp	r0, #10
 582:uc_libc_dev/graphic/gfx/gfx.c ****    	if(ch == '\n') {
 2440              		.loc 1 582 0
 2441 0002 F7B5     		push	{r0, r1, r2, r4, r5, r6, r7, lr}
 2442              	.LCFI38:
 2443              		.cfi_def_cfa_offset 32
 2444              		.cfi_offset 4, -20
 2445              		.cfi_offset 5, -16
 2446              		.cfi_offset 6, -12
 2447              		.cfi_offset 7, -8
 2448              		.cfi_offset 14, -4
 583:uc_libc_dev/graphic/gfx/gfx.c ****    		cursor_x  = 0;
 2449              		.loc 1 583 0
 2450 0004 0DD1     		bne	.L143
 584:uc_libc_dev/graphic/gfx/gfx.c ****    		cursor_y += (int)textsize * (u8)(gfxFont->yAdvance);
 2451              		.loc 1 584 0
 2452 0006 264B     		ldr	r3, .L159
 2453 0008 0022     		movs	r2, #0
 2454 000a 1A60     		str	r2, [r3]
 585:uc_libc_dev/graphic/gfx/gfx.c ****    	} else if(ch != '\r') {
 2455              		.loc 1 585 0
 2456 000c 254B     		ldr	r3, .L159+4
 2457 000e 2649     		ldr	r1, .L159+8
 2458 0010 1B68     		ldr	r3, [r3]
 2459 0012 1A7C     		ldrb	r2, [r3, #16]	@ zero_extendqisi2
 2460 0014 254B     		ldr	r3, .L159+12
 2461 0016 1868     		ldr	r0, [r3]
 2462              	.LVL259:
 2463 0018 0B68     		ldr	r3, [r1]
 2464 001a 00FB0233 		mla	r3, r0, r2, r3
 2465 001e 0B60     		str	r3, [r1]
 2466 0020 3BE0     		b	.L144
 2467              	.LVL260:
 2468              	.L143:
 586:uc_libc_dev/graphic/gfx/gfx.c ****    		u8 first = gfxFont->first;
 2469              		.loc 1 586 0
 2470 0022 0D28     		cmp	r0, #13
 2471 0024 39D0     		beq	.L144
 2472              	.LVL261:
 2473              	.LBB134:
 2474              	.LBB135:
 587:uc_libc_dev/graphic/gfx/gfx.c ****    		if((ch >= first) && (ch <= (u8)(gfxFont->last))) {
 2475              		.loc 1 587 0
 2476 0026 1F4B     		ldr	r3, .L159+4
 2477 0028 1968     		ldr	r1, [r3]
 2478 002a 8C68     		ldr	r4, [r1, #8]
 2479              	.LVL262:
 588:uc_libc_dev/graphic/gfx/gfx.c ****       		u8 c2 = ch - gfxFont->first;
 2480              		.loc 1 588 0
 2481 002c E3B2     		uxtb	r3, r4
 2482 002e 9842     		cmp	r0, r3
 2483 0030 33DB     		blt	.L144
 2484 0032 0B7B     		ldrb	r3, [r1, #12]	@ zero_extendqisi2
 2485 0034 9842     		cmp	r0, r3
 2486 0036 30DC     		bgt	.L144
 2487              	.LBB136:
 589:uc_libc_dev/graphic/gfx/gfx.c ****         	//tGFXglyph* glyph = &gfxFont->glyph[c2];
 2488              		.loc 1 589 0
 2489 0038 C2B2     		uxtb	r2, r0
 2490              	.LVL263:
 591:uc_libc_dev/graphic/gfx/gfx.c ****         	u8 w = glyph->width, h = glyph->height;
 2491              		.loc 1 591 0
 2492 003a 141B     		subs	r4, r2, r4
 2493              	.LVL264:
 2494 003c 4868     		ldr	r0, [r1, #4]
 2495              	.LVL265:
 2496 003e E3B2     		uxtb	r3, r4
 2497 0040 1824     		movs	r4, #24
 2498 0042 04FB0304 		mla	r4, r4, r3, r0
 2499              	.LVL266:
 594:uc_libc_dev/graphic/gfx/gfx.c ****           		int xo = glyph->xOffset; // sic
 2500              		.loc 1 594 0
 2501 0046 2779     		ldrb	r7, [r4, #4]	@ zero_extendqisi2
 2502 0048 154D     		ldr	r5, .L159
 2503 004a 184E     		ldr	r6, .L159+12
 2504 004c FFB1     		cbz	r7, .L145
 2505 004e 237A     		ldrb	r3, [r4, #8]	@ zero_extendqisi2
 2506 0050 EBB1     		cbz	r3, .L145
 2507              	.LVL267:
 2508              	.LBB137:
 596:uc_libc_dev/graphic/gfx/gfx.c ****             		// Drawing character would go off right edge; wrap to new line
 2509              		.loc 1 596 0
 2510 0052 174B     		ldr	r3, .L159+16
 2511 0054 1448     		ldr	r0, .L159+8
 2512 0056 1B68     		ldr	r3, [r3]
 2513 0058 8BB1     		cbz	r3, .L146
 2514 005a 2369     		ldr	r3, [r4, #16]
 2515 005c D6F800E0 		ldr	lr, [r6]
 2516 0060 3B44     		add	r3, r3, r7
 2517 0062 2F68     		ldr	r7, [r5]
 2518 0064 0EFB0373 		mla	r3, lr, r3, r7
 2519 0068 124F     		ldr	r7, .L159+20
 2520 006a 3F68     		ldr	r7, [r7]
 2521 006c BB42     		cmp	r3, r7
 2522 006e 06DB     		blt	.L146
 598:uc_libc_dev/graphic/gfx/gfx.c ****             		cursor_y += (int)textsize * (u8)(gfxFont->yAdvance);
 2523              		.loc 1 598 0
 2524 0070 0023     		movs	r3, #0
 2525 0072 2B60     		str	r3, [r5]
 599:uc_libc_dev/graphic/gfx/gfx.c ****           		}
 2526              		.loc 1 599 0
 2527 0074 097C     		ldrb	r1, [r1, #16]	@ zero_extendqisi2
 2528              	.LVL268:
 2529 0076 0368     		ldr	r3, [r0]
 2530 0078 0EFB0133 		mla	r3, lr, r1, r3
 2531 007c 0360     		str	r3, [r0]
 2532              	.L146:
 601:uc_libc_dev/graphic/gfx/gfx.c ****         	}
 2533              		.loc 1 601 0
 2534 007e 3368     		ldr	r3, [r6]
 2535 0080 0093     		str	r3, [sp]
 2536              	.LVL269:
 2537 0082 0D4B     		ldr	r3, .L159+24
 2538 0084 0168     		ldr	r1, [r0]
 2539 0086 1B68     		ldr	r3, [r3]
 2540 0088 2868     		ldr	r0, [r5]
 2541 008a FFF7FEFF 		bl	gfx_DrawChar
 2542              	.LVL270:
 2543              	.L145:
 2544              	.LBE137:
 603:uc_libc_dev/graphic/gfx/gfx.c ****       	}
 2545              		.loc 1 603 0
 2546 008e 2B68     		ldr	r3, [r5]
 2547 0090 E268     		ldr	r2, [r4, #12]
 2548 0092 3168     		ldr	r1, [r6]
 2549 0094 01FB0233 		mla	r3, r1, r2, r3
 2550 0098 2B60     		str	r3, [r5]
 2551              	.LVL271:
 2552              	.L144:
 2553              	.LBE136:
 2554              	.LBE135:
 2555              	.LBE134:
 607:uc_libc_dev/graphic/gfx/gfx.c **** 
 2556              		.loc 1 607 0
 2557 009a 0120     		movs	r0, #1
 2558 009c 03B0     		add	sp, sp, #12
 2559              	.LCFI39:
 2560              		.cfi_def_cfa_offset 20
 2561              		@ sp needed
 2562 009e F0BD     		pop	{r4, r5, r6, r7, pc}
 2563              	.L160:
 2564              		.align	2
 2565              	.L159:
 2566 00a0 00000000 		.word	.LANCHOR4
 2567 00a4 00000000 		.word	gfxFont
 2568 00a8 00000000 		.word	.LANCHOR3
 2569 00ac 00000000 		.word	.LANCHOR5
 2570 00b0 00000000 		.word	.LANCHOR7
 2571 00b4 00000000 		.word	.LANCHOR0
 2572 00b8 00000000 		.word	.LANCHOR6
 2573              		.cfi_endproc
 2574              	.LFE24:
 2576              		.section	.text.gfx_SetFont,"ax",%progbits
 2577              		.align	1
 2578              		.global	gfx_SetFont
 2579              		.thumb
 2580              		.thumb_func
 2582              	gfx_SetFont:
 2583              	.LFB26:
 668:uc_libc_dev/graphic/gfx/gfx.c **** 
 669:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_SetFont(tGFXfont *f) {
 2584              		.loc 1 669 0
 2585              		.cfi_startproc
 2586              		@ args = 0, pretend = 0, frame = 0
 2587              		@ frame_needed = 0, uses_anonymous_args = 0
 2588              		@ link register save eliminated.
 2589              	.LVL272:
 670:uc_libc_dev/graphic/gfx/gfx.c **** //  if(f) {          // Font struct pointer passed in?
 671:uc_libc_dev/graphic/gfx/gfx.c **** //    if(!gfxFont) { // And no current font struct?
 672:uc_libc_dev/graphic/gfx/gfx.c **** //      // Switching from classic to new font behavior.
 673:uc_libc_dev/graphic/gfx/gfx.c **** //      // Move cursor pos down 6 pixels so it's on baseline.
 674:uc_libc_dev/graphic/gfx/gfx.c **** //      cursor_y += 6;
 675:uc_libc_dev/graphic/gfx/gfx.c **** //    }
 676:uc_libc_dev/graphic/gfx/gfx.c **** //  } else if(gfxFont) { // NULL passed.  Current font struct defined?
 677:uc_libc_dev/graphic/gfx/gfx.c **** //    // Switching from new to classic font behavior.
 678:uc_libc_dev/graphic/gfx/gfx.c **** //    // Move cursor pos up 6 pixels so it's at top-left of char.
 679:uc_libc_dev/graphic/gfx/gfx.c **** //    cursor_y -= 6;
 680:uc_libc_dev/graphic/gfx/gfx.c **** //  }
 681:uc_libc_dev/graphic/gfx/gfx.c ****   	gfxFont = (tGFXfont*)f;
 2590              		.loc 1 681 0
 2591 0000 014B     		ldr	r3, .L162
 2592 0002 1860     		str	r0, [r3]
 2593 0004 7047     		bx	lr
 2594              	.L163:
 2595 0006 00BF     		.align	2
 2596              	.L162:
 2597 0008 00000000 		.word	gfxFont
 2598              		.cfi_endproc
 2599              	.LFE26:
 2601              		.section	.text.gfx_printfInit,"ax",%progbits
 2602              		.align	1
 2603              		.global	gfx_printfInit
 2604              		.thumb
 2605              		.thumb_func
 2607              	gfx_printfInit:
 2608              	.LFB27:
 682:uc_libc_dev/graphic/gfx/gfx.c **** }
 683:uc_libc_dev/graphic/gfx/gfx.c **** 
 684:uc_libc_dev/graphic/gfx/gfx.c **** //
 685:uc_libc_dev/graphic/gfx/gfx.c **** //// Pass string and a cursor position, returns UL corner and W,H.
 686:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX::getTextBounds(char *str, int x, int y,
 687:uc_libc_dev/graphic/gfx/gfx.c **** // int *x1, int *y1, uint *w, uint *h) {
 688:uc_libc_dev/graphic/gfx/gfx.c **** //  u8 c; // Current character
 689:uc_libc_dev/graphic/gfx/gfx.c **** //
 690:uc_libc_dev/graphic/gfx/gfx.c **** //  *x1 = x;
 691:uc_libc_dev/graphic/gfx/gfx.c **** //  *y1 = y;
 692:uc_libc_dev/graphic/gfx/gfx.c **** //  *w  = *h = 0;
 693:uc_libc_dev/graphic/gfx/gfx.c **** //
 694:uc_libc_dev/graphic/gfx/gfx.c **** //  if(gfxFont) {
 695:uc_libc_dev/graphic/gfx/gfx.c **** //
 696:uc_libc_dev/graphic/gfx/gfx.c **** //    tGFXglyph *glyph;
 697:uc_libc_dev/graphic/gfx/gfx.c **** //    u8   first = gfxFont->first,
 698:uc_libc_dev/graphic/gfx/gfx.c **** //              last  = gfxFont->last,
 699:uc_libc_dev/graphic/gfx/gfx.c **** //              gw, gh, xa;
 700:uc_libc_dev/graphic/gfx/gfx.c **** //    int8_t    xo, yo;
 701:uc_libc_dev/graphic/gfx/gfx.c **** //    int   minx = _width, miny = _height, maxx = -1, maxy = -1,
 702:uc_libc_dev/graphic/gfx/gfx.c **** //              gx1, gy1, gx2, gy2, ts = (int)textsize,
 703:uc_libc_dev/graphic/gfx/gfx.c **** //              ya = ts * (u8)gfxFont->yAdvance;
 704:uc_libc_dev/graphic/gfx/gfx.c **** //
 705:uc_libc_dev/graphic/gfx/gfx.c **** //    while((c = *str++)) {
 706:uc_libc_dev/graphic/gfx/gfx.c **** //      if(c != '\n') { // Not a newline
 707:uc_libc_dev/graphic/gfx/gfx.c **** //        if(c != '\r') { // Not a carriage return, is normal char
 708:uc_libc_dev/graphic/gfx/gfx.c **** //          if((c >= first) && (c <= last)) { // Char present in current font
 709:uc_libc_dev/graphic/gfx/gfx.c **** //            c    -= first;
 710:uc_libc_dev/graphic/gfx/gfx.c **** //            glyph = &(((tGFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]);
 711:uc_libc_dev/graphic/gfx/gfx.c **** //            gw    = glyph->width;
 712:uc_libc_dev/graphic/gfx/gfx.c **** //            gh    = glyph->height;
 713:uc_libc_dev/graphic/gfx/gfx.c **** //            xa    = glyph->xAdvance;
 714:uc_libc_dev/graphic/gfx/gfx.c **** //            xo    = glyph->xOffset;
 715:uc_libc_dev/graphic/gfx/gfx.c **** //            yo    = &glyph->yOffset;
 716:uc_libc_dev/graphic/gfx/gfx.c **** //            if(wrap && ((x + (((int)xo + gw) * ts)) >= _width)) {
 717:uc_libc_dev/graphic/gfx/gfx.c **** //              // Line wrap
 718:uc_libc_dev/graphic/gfx/gfx.c **** //              x  = 0;  // Reset x to 0
 719:uc_libc_dev/graphic/gfx/gfx.c **** //              y += ya; // Advance y by 1 line
 720:uc_libc_dev/graphic/gfx/gfx.c **** //            }
 721:uc_libc_dev/graphic/gfx/gfx.c **** //            gx1 = x   + xo * ts;
 722:uc_libc_dev/graphic/gfx/gfx.c **** //            gy1 = y   + yo * ts;
 723:uc_libc_dev/graphic/gfx/gfx.c **** //            gx2 = gx1 + gw * ts - 1;
 724:uc_libc_dev/graphic/gfx/gfx.c **** //            gy2 = gy1 + gh * ts - 1;
 725:uc_libc_dev/graphic/gfx/gfx.c **** //            if(gx1 < minx) minx = gx1;
 726:uc_libc_dev/graphic/gfx/gfx.c **** //            if(gy1 < miny) miny = gy1;
 727:uc_libc_dev/graphic/gfx/gfx.c **** //            if(gx2 > maxx) maxx = gx2;
 728:uc_libc_dev/graphic/gfx/gfx.c **** //            if(gy2 > maxy) maxy = gy2;
 729:uc_libc_dev/graphic/gfx/gfx.c **** //            x += xa * ts;
 730:uc_libc_dev/graphic/gfx/gfx.c **** //          }
 731:uc_libc_dev/graphic/gfx/gfx.c **** //        } // Carriage return = do nothing
 732:uc_libc_dev/graphic/gfx/gfx.c **** //      } else { // Newline
 733:uc_libc_dev/graphic/gfx/gfx.c **** //        x  = 0;  // Reset x
 734:uc_libc_dev/graphic/gfx/gfx.c **** //        y += ya; // Advance y by 1 line
 735:uc_libc_dev/graphic/gfx/gfx.c **** //      }
 736:uc_libc_dev/graphic/gfx/gfx.c **** //    }
 737:uc_libc_dev/graphic/gfx/gfx.c **** //    // End of string
 738:uc_libc_dev/graphic/gfx/gfx.c **** //    *x1 = minx;
 739:uc_libc_dev/graphic/gfx/gfx.c **** //    *y1 = miny;
 740:uc_libc_dev/graphic/gfx/gfx.c **** //    if(maxx >= minx) *w  = maxx - minx + 1;
 741:uc_libc_dev/graphic/gfx/gfx.c **** //    if(maxy >= miny) *h  = maxy - miny + 1;
 742:uc_libc_dev/graphic/gfx/gfx.c **** //
 743:uc_libc_dev/graphic/gfx/gfx.c **** //  } else { // Default font
 744:uc_libc_dev/graphic/gfx/gfx.c **** //
 745:uc_libc_dev/graphic/gfx/gfx.c **** //    uint lineWidth = 0, maxWidth = 0; // Width of current, all lines
 746:uc_libc_dev/graphic/gfx/gfx.c **** //
 747:uc_libc_dev/graphic/gfx/gfx.c **** //    while((c = *str++)) {
 748:uc_libc_dev/graphic/gfx/gfx.c **** //      if(c != '\n') { // Not a newline
 749:uc_libc_dev/graphic/gfx/gfx.c **** //        if(c != '\r') { // Not a carriage return, is normal char
 750:uc_libc_dev/graphic/gfx/gfx.c **** //          if(wrap && ((x + textsize * 6) >= _width)) {
 751:uc_libc_dev/graphic/gfx/gfx.c **** //            x  = 0;            // Reset x to 0
 752:uc_libc_dev/graphic/gfx/gfx.c **** //            y += textsize * 8; // Advance y by 1 line
 753:uc_libc_dev/graphic/gfx/gfx.c **** //            if(lineWidth > maxWidth) maxWidth = lineWidth; // Save widest line
 754:uc_libc_dev/graphic/gfx/gfx.c **** //            lineWidth  = textsize * 6; // First char on new line
 755:uc_libc_dev/graphic/gfx/gfx.c **** //          } else { // No line wrap, just keep incrementing X
 756:uc_libc_dev/graphic/gfx/gfx.c **** //            lineWidth += textsize * 6; // Includes interchar x gap
 757:uc_libc_dev/graphic/gfx/gfx.c **** //          }
 758:uc_libc_dev/graphic/gfx/gfx.c **** //        } // Carriage return = do nothing
 759:uc_libc_dev/graphic/gfx/gfx.c **** //      } else { // Newline
 760:uc_libc_dev/graphic/gfx/gfx.c **** //        x  = 0;            // Reset x to 0
 761:uc_libc_dev/graphic/gfx/gfx.c **** //        y += textsize * 8; // Advance y by 1 line
 762:uc_libc_dev/graphic/gfx/gfx.c **** //        if(lineWidth > maxWidth) maxWidth = lineWidth; // Save widest line
 763:uc_libc_dev/graphic/gfx/gfx.c **** //        lineWidth = 0;     // Reset lineWidth for new line
 764:uc_libc_dev/graphic/gfx/gfx.c **** //      }
 765:uc_libc_dev/graphic/gfx/gfx.c **** //    }
 766:uc_libc_dev/graphic/gfx/gfx.c **** //    // End of string
 767:uc_libc_dev/graphic/gfx/gfx.c **** //    if(lineWidth) y += textsize * 8; // Add height of last (or only) line
 768:uc_libc_dev/graphic/gfx/gfx.c **** //    if(lineWidth > maxWidth) maxWidth = lineWidth; // Is the last or only line the widest?
 769:uc_libc_dev/graphic/gfx/gfx.c **** //    *w = maxWidth - 1;               // Don't include last interchar x gap
 770:uc_libc_dev/graphic/gfx/gfx.c **** //    *h = y - *y1;
 771:uc_libc_dev/graphic/gfx/gfx.c **** //
 772:uc_libc_dev/graphic/gfx/gfx.c **** //  } // End classic vs custom font
 773:uc_libc_dev/graphic/gfx/gfx.c **** //}
 774:uc_libc_dev/graphic/gfx/gfx.c **** //
 775:uc_libc_dev/graphic/gfx/gfx.c **** //// Same as above, but for PROGMEM strings
 776:uc_libc_dev/graphic/gfx/gfx.c **** //void Adafruit_GFX::getTextBounds(const __FlashStringHelper *str,
 777:uc_libc_dev/graphic/gfx/gfx.c **** // int x, int y, int *x1, int *y1, uint *w, uint *h) {
 778:uc_libc_dev/graphic/gfx/gfx.c **** //  u8 *s = (u8 *)str, c;
 779:uc_libc_dev/graphic/gfx/gfx.c **** //
 780:uc_libc_dev/graphic/gfx/gfx.c **** //  *x1 = x;
 781:uc_libc_dev/graphic/gfx/gfx.c **** //  *y1 = y;
 782:uc_libc_dev/graphic/gfx/gfx.c **** //  *w  = *h = 0;
 783:uc_libc_dev/graphic/gfx/gfx.c **** //
 784:uc_libc_dev/graphic/gfx/gfx.c **** //  if(gfxFont) {
 785:uc_libc_dev/graphic/gfx/gfx.c **** //
 786:uc_libc_dev/graphic/gfx/gfx.c **** //    tGFXglyph *glyph;
 787:uc_libc_dev/graphic/gfx/gfx.c **** //    u8   first = gfxFont->first,
 788:uc_libc_dev/graphic/gfx/gfx.c **** //              last  = gfxFont->last,
 789:uc_libc_dev/graphic/gfx/gfx.c **** //              gw, gh, xa;
 790:uc_libc_dev/graphic/gfx/gfx.c **** //    int8_t    xo, yo;
 791:uc_libc_dev/graphic/gfx/gfx.c **** //    int   minx = _width, miny = _height, maxx = -1, maxy = -1,
 792:uc_libc_dev/graphic/gfx/gfx.c **** //              gx1, gy1, gx2, gy2, ts = (int)textsize,
 793:uc_libc_dev/graphic/gfx/gfx.c **** //              ya = ts * (u8)gfxFont->yAdvance;
 794:uc_libc_dev/graphic/gfx/gfx.c **** //
 795:uc_libc_dev/graphic/gfx/gfx.c **** //    while((c = s++)) {
 796:uc_libc_dev/graphic/gfx/gfx.c **** //      if(c != '\n') { // Not a newline
 797:uc_libc_dev/graphic/gfx/gfx.c **** //        if(c != '\r') { // Not a carriage return, is normal char
 798:uc_libc_dev/graphic/gfx/gfx.c **** //          if((c >= first) && (c <= last)) { // Char present in current font
 799:uc_libc_dev/graphic/gfx/gfx.c **** //            c    -= first;
 800:uc_libc_dev/graphic/gfx/gfx.c **** //            glyph = &(((tGFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]);
 801:uc_libc_dev/graphic/gfx/gfx.c **** //            gw    = glyph->width;
 802:uc_libc_dev/graphic/gfx/gfx.c **** //            gh    = glyph->height;
 803:uc_libc_dev/graphic/gfx/gfx.c **** //            xa    = glyph->xAdvance;
 804:uc_libc_dev/graphic/gfx/gfx.c **** //            xo    = glyph->xOffset;
 805:uc_libc_dev/graphic/gfx/gfx.c **** //            yo    = glyph->yOffset;
 806:uc_libc_dev/graphic/gfx/gfx.c **** //            if(wrap && ((x + (((int)xo + gw) * ts)) >= _width)) {
 807:uc_libc_dev/graphic/gfx/gfx.c **** //              // Line wrap
 808:uc_libc_dev/graphic/gfx/gfx.c **** //              x  = 0;  // Reset x to 0
 809:uc_libc_dev/graphic/gfx/gfx.c **** //              y += ya; // Advance y by 1 line
 810:uc_libc_dev/graphic/gfx/gfx.c **** //            }
 811:uc_libc_dev/graphic/gfx/gfx.c **** //            gx1 = x   + xo * ts;
 812:uc_libc_dev/graphic/gfx/gfx.c **** //            gy1 = y   + yo * ts;
 813:uc_libc_dev/graphic/gfx/gfx.c **** //            gx2 = gx1 + gw * ts - 1;
 814:uc_libc_dev/graphic/gfx/gfx.c **** //            gy2 = gy1 + gh * ts - 1;
 815:uc_libc_dev/graphic/gfx/gfx.c **** //            if(gx1 < minx) minx = gx1;
 816:uc_libc_dev/graphic/gfx/gfx.c **** //            if(gy1 < miny) miny = gy1;
 817:uc_libc_dev/graphic/gfx/gfx.c **** //            if(gx2 > maxx) maxx = gx2;
 818:uc_libc_dev/graphic/gfx/gfx.c **** //            if(gy2 > maxy) maxy = gy2;
 819:uc_libc_dev/graphic/gfx/gfx.c **** //            x += xa * ts;
 820:uc_libc_dev/graphic/gfx/gfx.c **** //          }
 821:uc_libc_dev/graphic/gfx/gfx.c **** //        } // Carriage return = do nothing
 822:uc_libc_dev/graphic/gfx/gfx.c **** //      } else { // Newline
 823:uc_libc_dev/graphic/gfx/gfx.c **** //        x  = 0;  // Reset x
 824:uc_libc_dev/graphic/gfx/gfx.c **** //        y += ya; // Advance y by 1 line
 825:uc_libc_dev/graphic/gfx/gfx.c **** //      }
 826:uc_libc_dev/graphic/gfx/gfx.c **** //    }
 827:uc_libc_dev/graphic/gfx/gfx.c **** //    // End of string
 828:uc_libc_dev/graphic/gfx/gfx.c **** //    *x1 = minx;
 829:uc_libc_dev/graphic/gfx/gfx.c **** //    *y1 = miny;
 830:uc_libc_dev/graphic/gfx/gfx.c **** //    if(maxx >= minx) *w  = maxx - minx + 1;
 831:uc_libc_dev/graphic/gfx/gfx.c **** //    if(maxy >= miny) *h  = maxy - miny + 1;
 832:uc_libc_dev/graphic/gfx/gfx.c **** //
 833:uc_libc_dev/graphic/gfx/gfx.c **** //  } else { // Default font
 834:uc_libc_dev/graphic/gfx/gfx.c **** //
 835:uc_libc_dev/graphic/gfx/gfx.c **** //    uint lineWidth = 0, maxWidth = 0; // Width of current, all lines
 836:uc_libc_dev/graphic/gfx/gfx.c **** //
 837:uc_libc_dev/graphic/gfx/gfx.c **** //    while((c = s++)) {
 838:uc_libc_dev/graphic/gfx/gfx.c **** //      if(c != '\n') { // Not a newline
 839:uc_libc_dev/graphic/gfx/gfx.c **** //        if(c != '\r') { // Not a carriage return, is normal char
 840:uc_libc_dev/graphic/gfx/gfx.c **** //          if(wrap && ((x + textsize * 6) >= _width)) {
 841:uc_libc_dev/graphic/gfx/gfx.c **** //            x  = 0;            // Reset x to 0
 842:uc_libc_dev/graphic/gfx/gfx.c **** //            y += textsize * 8; // Advance y by 1 line
 843:uc_libc_dev/graphic/gfx/gfx.c **** //            if(lineWidth > maxWidth) maxWidth = lineWidth; // Save widest line
 844:uc_libc_dev/graphic/gfx/gfx.c **** //            lineWidth  = textsize * 6; // First char on new line
 845:uc_libc_dev/graphic/gfx/gfx.c **** //          } else { // No line wrap, just keep incrementing X
 846:uc_libc_dev/graphic/gfx/gfx.c **** //            lineWidth += textsize * 6; // Includes interchar x gap
 847:uc_libc_dev/graphic/gfx/gfx.c **** //          }
 848:uc_libc_dev/graphic/gfx/gfx.c **** //        } // Carriage return = do nothing
 849:uc_libc_dev/graphic/gfx/gfx.c **** //      } else { // Newline
 850:uc_libc_dev/graphic/gfx/gfx.c **** //        x  = 0;            // Reset x to 0
 851:uc_libc_dev/graphic/gfx/gfx.c **** //        y += textsize * 8; // Advance y by 1 line
 852:uc_libc_dev/graphic/gfx/gfx.c **** //        if(lineWidth > maxWidth) maxWidth = lineWidth; // Save widest line
 853:uc_libc_dev/graphic/gfx/gfx.c **** //        lineWidth = 0;     // Reset lineWidth for new line
 854:uc_libc_dev/graphic/gfx/gfx.c **** //      }
 855:uc_libc_dev/graphic/gfx/gfx.c **** //    }
 856:uc_libc_dev/graphic/gfx/gfx.c **** //    // End of string
 857:uc_libc_dev/graphic/gfx/gfx.c **** //    if(lineWidth) y += textsize * 8; // Add height of last (or only) line
 858:uc_libc_dev/graphic/gfx/gfx.c **** //    if(lineWidth > maxWidth) maxWidth = lineWidth; // Is the last or only line the widest?
 859:uc_libc_dev/graphic/gfx/gfx.c **** //    *w = maxWidth - 1;               // Don't include last interchar x gap
 860:uc_libc_dev/graphic/gfx/gfx.c **** //    *h = y - *y1;
 861:uc_libc_dev/graphic/gfx/gfx.c **** //
 862:uc_libc_dev/graphic/gfx/gfx.c **** //  } // End classic vs custom font
 863:uc_libc_dev/graphic/gfx/gfx.c **** //}
 864:uc_libc_dev/graphic/gfx/gfx.c **** 
 865:uc_libc_dev/graphic/gfx/gfx.c **** 
 866:uc_libc_dev/graphic/gfx/gfx.c **** #if (TFT_USE_PRINTF == pdON)
 867:uc_libc_dev/graphic/gfx/gfx.c **** #include "stdio_uc.h"
 868:uc_libc_dev/graphic/gfx/gfx.c **** static uint devicePrintf = 0;
 869:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_printfInit(uint dev) {
 2609              		.loc 1 869 0
 2610              		.cfi_startproc
 2611              		@ args = 0, pretend = 0, frame = 0
 2612              		@ frame_needed = 0, uses_anonymous_args = 0
 2613              		@ link register save eliminated.
 2614              	.LVL273:
 870:uc_libc_dev/graphic/gfx/gfx.c **** 	devicePrintf = dev;
 2615              		.loc 1 870 0
 2616 0000 024B     		ldr	r3, .L165
 871:uc_libc_dev/graphic/gfx/gfx.c **** 	rprintf_RegisterDev(dev, gfx_PutChar);	// Anexa a função ao printf
 2617              		.loc 1 871 0
 2618 0002 0349     		ldr	r1, .L165+4
 870:uc_libc_dev/graphic/gfx/gfx.c **** 	devicePrintf = dev;
 2619              		.loc 1 870 0
 2620 0004 1860     		str	r0, [r3]
 2621              		.loc 1 871 0
 2622 0006 C0B2     		uxtb	r0, r0
 2623              	.LVL274:
 2624 0008 FFF7FEBF 		b	rprintf_RegisterDev
 2625              	.LVL275:
 2626              	.L166:
 2627              		.align	2
 2628              	.L165:
 2629 000c 00000000 		.word	.LANCHOR8
 2630 0010 00000000 		.word	gfx_PutChar
 2631              		.cfi_endproc
 2632              	.LFE27:
 2634              		.section	.text.gfx_printf,"ax",%progbits
 2635              		.align	1
 2636              		.global	gfx_printf
 2637              		.thumb
 2638              		.thumb_func
 2640              	gfx_printf:
 2641              	.LFB28:
 872:uc_libc_dev/graphic/gfx/gfx.c **** }
 873:uc_libc_dev/graphic/gfx/gfx.c **** 
 874:uc_libc_dev/graphic/gfx/gfx.c **** // faz o mesmo que rprintf, porém acrescenta espaços vazios para preencher toda a linha,
 875:uc_libc_dev/graphic/gfx/gfx.c **** //	apagando os caracteres impressos anteriormente
 876:uc_libc_dev/graphic/gfx/gfx.c **** void gfx_printf(const cpchar fmt, ...) {
 2642              		.loc 1 876 0
 2643              		.cfi_startproc
 2644              		@ args = 4, pretend = 16, frame = 88
 2645              		@ frame_needed = 0, uses_anonymous_args = 1
 2646              	.LVL276:
 2647 0000 0FB4     		push	{r0, r1, r2, r3}
 2648              	.LCFI40:
 2649              		.cfi_def_cfa_offset 16
 2650              		.cfi_offset 0, -16
 2651              		.cfi_offset 1, -12
 2652              		.cfi_offset 2, -8
 2653              		.cfi_offset 3, -4
 2654 0002 10B5     		push	{r4, lr}
 2655              	.LCFI41:
 2656              		.cfi_def_cfa_offset 24
 2657              		.cfi_offset 4, -24
 2658              		.cfi_offset 14, -20
 2659 0004 96B0     		sub	sp, sp, #88
 2660              	.LCFI42:
 2661              		.cfi_def_cfa_offset 112
 2662              		.loc 1 876 0
 2663 0006 18AA     		add	r2, sp, #96
 2664 0008 52F8041B 		ldr	r1, [r2], #4
 877:uc_libc_dev/graphic/gfx/gfx.c **** 	string s;
 878:uc_libc_dev/graphic/gfx/gfx.c **** 	tPrint output;
 879:uc_libc_dev/graphic/gfx/gfx.c **** 
 880:uc_libc_dev/graphic/gfx/gfx.c **** 	output.device = 0;
 2665              		.loc 1 880 0
 2666 000c 0023     		movs	r3, #0
 2667 000e 8DF81430 		strb	r3, [sp, #20]
 881:uc_libc_dev/graphic/gfx/gfx.c **** 	output.buf = s;					// Sinaliza qual buffer para armazenar a formatação de string. Também sinaliza
 2668              		.loc 1 881 0
 2669 0012 06AC     		add	r4, sp, #24
 882:uc_libc_dev/graphic/gfx/gfx.c **** 	output.isSformat = 1;			// Sinaliza que é um sformat
 2670              		.loc 1 882 0
 2671 0014 0123     		movs	r3, #1
 883:uc_libc_dev/graphic/gfx/gfx.c **** 
 884:uc_libc_dev/graphic/gfx/gfx.c **** 	va_list args;					// Cria var para captura de argumentos (fmt) no stack da chamada de função
 885:uc_libc_dev/graphic/gfx/gfx.c **** 	va_start(args, fmt);			// Captura os argumentos após fmt
 886:uc_libc_dev/graphic/gfx/gfx.c **** 	doprint(&output, fmt, args);	// Faz a formatação da string com ftm e args e manda imprimir
 2672              		.loc 1 886 0
 2673 0016 02A8     		add	r0, sp, #8
 882:uc_libc_dev/graphic/gfx/gfx.c **** 	output.isSformat = 1;			// Sinaliza que é um sformat
 2674              		.loc 1 882 0
 2675 0018 8DF81330 		strb	r3, [sp, #19]
 885:uc_libc_dev/graphic/gfx/gfx.c **** 	doprint(&output, fmt, args);	// Faz a formatação da string com ftm e args e manda imprimir
 2676              		.loc 1 885 0
 2677 001c 0192     		str	r2, [sp, #4]
 881:uc_libc_dev/graphic/gfx/gfx.c **** 	output.isSformat = 1;			// Sinaliza que é um sformat
 2678              		.loc 1 881 0
 2679 001e 0294     		str	r4, [sp, #8]
 2680              		.loc 1 886 0
 2681 0020 FFF7FEFF 		bl	doprint
 2682              	.LVL277:
 887:uc_libc_dev/graphic/gfx/gfx.c **** 	va_end(args);					// Desmonta args
 888:uc_libc_dev/graphic/gfx/gfx.c **** 
 889:uc_libc_dev/graphic/gfx/gfx.c **** 	rprintf(devicePrintf, "%s", s);
 2683              		.loc 1 889 0
 2684 0024 054B     		ldr	r3, .L168
 2685 0026 2246     		mov	r2, r4
 2686 0028 0549     		ldr	r1, .L168+4
 2687 002a 1878     		ldrb	r0, [r3]	@ zero_extendqisi2
 2688 002c FFF7FEFF 		bl	rprintf
 2689              	.LVL278:
 890:uc_libc_dev/graphic/gfx/gfx.c **** }
 2690              		.loc 1 890 0
 2691 0030 16B0     		add	sp, sp, #88
 2692              	.LCFI43:
 2693              		.cfi_def_cfa_offset 24
 2694              		@ sp needed
 2695 0032 BDE81040 		pop	{r4, lr}
 2696              	.LCFI44:
 2697              		.cfi_restore 14
 2698              		.cfi_restore 4
 2699              		.cfi_def_cfa_offset 16
 2700 0036 04B0     		add	sp, sp, #16
 2701              	.LCFI45:
 2702              		.cfi_restore 3
 2703              		.cfi_restore 2
 2704              		.cfi_restore 1
 2705              		.cfi_restore 0
 2706              		.cfi_def_cfa_offset 0
 2707 0038 7047     		bx	lr
 2708              	.L169:
 2709 003a 00BF     		.align	2
 2710              	.L168:
 2711 003c 00000000 		.word	.LANCHOR8
 2712 0040 00000000 		.word	.LC0
 2713              		.cfi_endproc
 2714              	.LFE28:
 2716              		.comm	gfxFont,4,4
 2717              		.section	.bss._width,"aw",%nobits
 2718              		.align	2
 2719              		.set	.LANCHOR0,. + 0
 2722              	_width:
 2723 0000 00000000 		.space	4
 2724              		.section	.bss.textcolor,"aw",%nobits
 2725              		.align	2
 2726              		.set	.LANCHOR6,. + 0
 2729              	textcolor:
 2730 0000 00000000 		.space	4
 2731              		.section	.bss.wrap,"aw",%nobits
 2732              		.align	2
 2733              		.set	.LANCHOR7,. + 0
 2736              	wrap:
 2737 0000 00000000 		.space	4
 2738              		.section	.rodata.str1.1,"aMS",%progbits,1
 2739              	.LC0:
 2740 0000 257300   		.ascii	"%s\000"
 2741              		.section	.bss.textsize,"aw",%nobits
 2742              		.align	2
 2743              		.set	.LANCHOR5,. + 0
 2746              	textsize:
 2747 0000 00000000 		.space	4
 2748              		.section	.bss.devicePrintf,"aw",%nobits
 2749              		.align	2
 2750              		.set	.LANCHOR8,. + 0
 2753              	devicePrintf:
 2754 0000 00000000 		.space	4
 2755              		.section	.bss._height,"aw",%nobits
 2756              		.align	2
 2757              		.set	.LANCHOR1,. + 0
 2760              	_height:
 2761 0000 00000000 		.space	4
 2762              		.section	.bss.cursor_x,"aw",%nobits
 2763              		.align	2
 2764              		.set	.LANCHOR4,. + 0
 2767              	cursor_x:
 2768 0000 00000000 		.space	4
 2769              		.section	.bss.cursor_y,"aw",%nobits
 2770              		.align	2
 2771              		.set	.LANCHOR3,. + 0
 2774              	cursor_y:
 2775 0000 00000000 		.space	4
 2776              		.section	.bss.rotation,"aw",%nobits
 2777              		.align	2
 2778              		.set	.LANCHOR2,. + 0
 2781              	rotation:
 2782 0000 00000000 		.space	4
 2783              		.text
 2784              	.Letext0:
 2785              		.file 2 "uc_libc_dev/_libdef/uc_libdefs.h"
 2786              		.file 3 "uc_libc_dev/graphic/gfx/fonts/fonts.h"
 2787              		.file 4 "d:\\cc\\arm-yagarto-5.4.2016q3\\lib\\gcc\\arm-none-eabi\\5.4.1\\include\\stdarg.h"
 2788              		.file 5 "uc_libc_dev/stdio/stdio_uc.h"
 2789              		.file 6 "uc_libc_dev/graphic/gfx/ili9341.h"
 2790              		.file 7 "<built-in>"
DEFINED SYMBOLS
                            *ABS*:00000000 gfx.c
D:\_temp\_windows\ccN6dobZ.s:20     .text.gfx_Init:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:25     .text.gfx_Init:00000000 gfx_Init
D:\_temp\_windows\ccN6dobZ.s:72     .text.gfx_Init:00000034 $d
                            *COM*:00000004 gfxFont
D:\_temp\_windows\ccN6dobZ.s:85     .text.gfx_SetRotation:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:90     .text.gfx_SetRotation:00000000 gfx_SetRotation
D:\_temp\_windows\ccN6dobZ.s:132    .text.gfx_SetRotation:0000002c $d
D:\_temp\_windows\ccN6dobZ.s:139    .text.gfx_GetRotation:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:144    .text.gfx_GetRotation:00000000 gfx_GetRotation
D:\_temp\_windows\ccN6dobZ.s:158    .text.gfx_GetRotation:00000008 $d
D:\_temp\_windows\ccN6dobZ.s:163    .text.gfx_DrawLine:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:168    .text.gfx_DrawLine:00000000 gfx_DrawLine
D:\_temp\_windows\ccN6dobZ.s:321    .text.gfx_DrawFastVLine:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:326    .text.gfx_DrawFastVLine:00000000 gfx_DrawFastVLine
D:\_temp\_windows\ccN6dobZ.s:343    .text.gfx_DrawFastHLine:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:348    .text.gfx_DrawFastHLine:00000000 gfx_DrawFastHLine
D:\_temp\_windows\ccN6dobZ.s:365    .text.gfx_FillRect:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:370    .text.gfx_FillRect:00000000 gfx_FillRect
D:\_temp\_windows\ccN6dobZ.s:432    .text.gfx_FillScreen:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:437    .text.gfx_FillScreen:00000000 gfx_FillScreen
D:\_temp\_windows\ccN6dobZ.s:468    .text.gfx_FillScreen:0000001c $d
D:\_temp\_windows\ccN6dobZ.s:474    .text.gfx_DrawRect:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:479    .text.gfx_DrawRect:00000000 gfx_DrawRect
D:\_temp\_windows\ccN6dobZ.s:600    .text.gfx_DrawTriangle:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:605    .text.gfx_DrawTriangle:00000000 gfx_DrawTriangle
D:\_temp\_windows\ccN6dobZ.s:673    .text.gfx_FillTriangle:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:678    .text.gfx_FillTriangle:00000000 gfx_FillTriangle
D:\_temp\_windows\ccN6dobZ.s:1062   .text.gfx_DrawCircle:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:1067   .text.gfx_DrawCircle:00000000 gfx_DrawCircle
D:\_temp\_windows\ccN6dobZ.s:1270   .text.gfx_DrawCircleHelper:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:1275   .text.gfx_DrawCircleHelper:00000000 gfx_DrawCircleHelper
D:\_temp\_windows\ccN6dobZ.s:1459   .text.gfx_FillCircleHelper:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:1464   .text.gfx_FillCircleHelper:00000000 gfx_FillCircleHelper
D:\_temp\_windows\ccN6dobZ.s:1668   .text.gfx_FillCircle:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:1673   .text.gfx_FillCircle:00000000 gfx_FillCircle
D:\_temp\_windows\ccN6dobZ.s:1734   .text.gfx_DrawRoundRect:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:1739   .text.gfx_DrawRoundRect:00000000 gfx_DrawRoundRect
D:\_temp\_windows\ccN6dobZ.s:1956   .text.gfx_FillRoundRect:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:1961   .text.gfx_FillRoundRect:00000000 gfx_FillRoundRect
D:\_temp\_windows\ccN6dobZ.s:2044   .text.gfx_SetCursor:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2049   .text.gfx_SetCursor:00000000 gfx_SetCursor
D:\_temp\_windows\ccN6dobZ.s:2067   .text.gfx_SetCursor:0000000c $d
D:\_temp\_windows\ccN6dobZ.s:2073   .text.gfx_GetCursorX:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2078   .text.gfx_GetCursorX:00000000 gfx_GetCursorX
D:\_temp\_windows\ccN6dobZ.s:2092   .text.gfx_GetCursorX:00000008 $d
D:\_temp\_windows\ccN6dobZ.s:2097   .text.gfx_GetCursorY:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2102   .text.gfx_GetCursorY:00000000 gfx_GetCursorY
D:\_temp\_windows\ccN6dobZ.s:2116   .text.gfx_GetCursorY:00000008 $d
D:\_temp\_windows\ccN6dobZ.s:2121   .text.gfx_SetTextSize:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2126   .text.gfx_SetTextSize:00000000 gfx_SetTextSize
D:\_temp\_windows\ccN6dobZ.s:2145   .text.gfx_SetTextSize:0000000c $d
D:\_temp\_windows\ccN6dobZ.s:2150   .text.gfx_SetTextColor:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2155   .text.gfx_SetTextColor:00000000 gfx_SetTextColor
D:\_temp\_windows\ccN6dobZ.s:2170   .text.gfx_SetTextColor:00000008 $d
D:\_temp\_windows\ccN6dobZ.s:2175   .text.gfx_SetTextWrap:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2180   .text.gfx_SetTextWrap:00000000 gfx_SetTextWrap
D:\_temp\_windows\ccN6dobZ.s:2195   .text.gfx_SetTextWrap:00000008 $d
D:\_temp\_windows\ccN6dobZ.s:2200   .text.gfx_cp437:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2205   .text.gfx_cp437:00000000 gfx_cp437
D:\_temp\_windows\ccN6dobZ.s:2218   .text.gfx_DrawChar:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2223   .text.gfx_DrawChar:00000000 gfx_DrawChar
D:\_temp\_windows\ccN6dobZ.s:2421   .text.gfx_DrawChar:000000f4 $d
D:\_temp\_windows\ccN6dobZ.s:2426   .text.gfx_PutChar:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2431   .text.gfx_PutChar:00000000 gfx_PutChar
D:\_temp\_windows\ccN6dobZ.s:2566   .text.gfx_PutChar:000000a0 $d
D:\_temp\_windows\ccN6dobZ.s:2577   .text.gfx_SetFont:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2582   .text.gfx_SetFont:00000000 gfx_SetFont
D:\_temp\_windows\ccN6dobZ.s:2597   .text.gfx_SetFont:00000008 $d
D:\_temp\_windows\ccN6dobZ.s:2602   .text.gfx_printfInit:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2607   .text.gfx_printfInit:00000000 gfx_printfInit
D:\_temp\_windows\ccN6dobZ.s:2629   .text.gfx_printfInit:0000000c $d
D:\_temp\_windows\ccN6dobZ.s:2635   .text.gfx_printf:00000000 $t
D:\_temp\_windows\ccN6dobZ.s:2640   .text.gfx_printf:00000000 gfx_printf
D:\_temp\_windows\ccN6dobZ.s:2711   .text.gfx_printf:0000003c $d
D:\_temp\_windows\ccN6dobZ.s:2718   .bss._width:00000000 $d
D:\_temp\_windows\ccN6dobZ.s:2722   .bss._width:00000000 _width
D:\_temp\_windows\ccN6dobZ.s:2725   .bss.textcolor:00000000 $d
D:\_temp\_windows\ccN6dobZ.s:2729   .bss.textcolor:00000000 textcolor
D:\_temp\_windows\ccN6dobZ.s:2732   .bss.wrap:00000000 $d
D:\_temp\_windows\ccN6dobZ.s:2736   .bss.wrap:00000000 wrap
D:\_temp\_windows\ccN6dobZ.s:2742   .bss.textsize:00000000 $d
D:\_temp\_windows\ccN6dobZ.s:2746   .bss.textsize:00000000 textsize
D:\_temp\_windows\ccN6dobZ.s:2749   .bss.devicePrintf:00000000 $d
D:\_temp\_windows\ccN6dobZ.s:2753   .bss.devicePrintf:00000000 devicePrintf
D:\_temp\_windows\ccN6dobZ.s:2756   .bss._height:00000000 $d
D:\_temp\_windows\ccN6dobZ.s:2760   .bss._height:00000000 _height
D:\_temp\_windows\ccN6dobZ.s:2763   .bss.cursor_x:00000000 $d
D:\_temp\_windows\ccN6dobZ.s:2767   .bss.cursor_x:00000000 cursor_x
D:\_temp\_windows\ccN6dobZ.s:2770   .bss.cursor_y:00000000 $d
D:\_temp\_windows\ccN6dobZ.s:2774   .bss.cursor_y:00000000 cursor_y
D:\_temp\_windows\ccN6dobZ.s:2777   .bss.rotation:00000000 $d
D:\_temp\_windows\ccN6dobZ.s:2781   .bss.rotation:00000000 rotation
                     .debug_frame:00000010 $d

UNDEFINED SYMBOLS
tft_SetRotation
tft_DrawPixel
tft_DrawFastVLine
tft_DrawFastHLine
rprintf_RegisterDev
doprint
rprintf
